protected override void ProcessRecord() { string shellID = base.Context.ShellID; string executionPolicy = SecuritySupport.GetExecutionPolicy(this.ExecutionPolicy); if (this.ShouldProcessPolicyChange(executionPolicy)) { SecuritySupport.SetExecutionPolicy(this.executionPolicyScope, this.ExecutionPolicy, shellID); if (this.ExecutionPolicy != ExecutionPolicy.Undefined) { string str = SecuritySupport.GetExecutionPolicy(shellID).ToString(); if (!string.Equals(str, executionPolicy, StringComparison.OrdinalIgnoreCase)) { string str1 = StringUtil.Format(ExecutionPolicyCommands.ExecutionPolicyOverridden, str); string executionPolicyOverriddenRecommendedAction = ExecutionPolicyCommands.ExecutionPolicyOverriddenRecommendedAction; ErrorRecord errorRecord = new ErrorRecord(new SecurityException(), "ExecutionPolicyOverride", ErrorCategory.PermissionDenied, null); errorRecord.ErrorDetails = new ErrorDetails(str1); errorRecord.ErrorDetails.RecommendedAction = executionPolicyOverriddenRecommendedAction; base.ThrowTerminatingError(errorRecord); } } PSSQMAPI.UpdateExecutionPolicy(shellID, this.ExecutionPolicy); PSEtwLog.LogSettingsEvent(MshLog.GetLogContext(base.Context, base.MyInvocation), EtwLoggingStrings.ExecutionPolicyName, executionPolicy, null); } }
/// <summary> /// Set the desired execution policy. /// </summary> protected override void ProcessRecord() { string shellId = base.Context.ShellID; string executionPolicy = SecuritySupport.GetExecutionPolicy(ExecutionPolicy); if (ShouldProcessPolicyChange(executionPolicy)) { try { SecuritySupport.SetExecutionPolicy(_executionPolicyScope, ExecutionPolicy, shellId); } catch (UnauthorizedAccessException exception) { OnAccessDeniedError(exception); } catch (System.Security.SecurityException exception) { OnAccessDeniedError(exception); } // Ensure it is now the effective execution policy if (ExecutionPolicy != ExecutionPolicy.Undefined) { string effectiveExecutionPolicy = SecuritySupport.GetExecutionPolicy(shellId).ToString(); if (!string.Equals(effectiveExecutionPolicy, executionPolicy, StringComparison.OrdinalIgnoreCase)) { string message = StringUtil.Format(ExecutionPolicyCommands.ExecutionPolicyOverridden, effectiveExecutionPolicy); string recommendedAction = ExecutionPolicyCommands.ExecutionPolicyOverriddenRecommendedAction; ErrorRecord errorRecord = new ErrorRecord( new System.Security.SecurityException(), "ExecutionPolicyOverride", ErrorCategory.PermissionDenied, null); errorRecord.ErrorDetails = new ErrorDetails(message); errorRecord.ErrorDetails.RecommendedAction = recommendedAction; ThrowTerminatingError(errorRecord); } } #if !CORECLR PSEtwLog.LogSettingsEvent(MshLog.GetLogContext(Context, MyInvocation), EtwLoggingStrings.ExecutionPolicyName, executionPolicy, null); #endif } }//End ProcessRecord()