Set-ExecutionPolicy Ошибка, когда не вызывается - PullRequest
0 голосов
/ 13 декабря 2018

Когда я запускаю любой скрипт из файла .ps1 на моем сервере, я получаю сообщение об ошибке Set-ExcutionPolicy, которая успешно выполняется, но переопределяется более высокой областью действия.Однако ни один код, который я запускаю, не имеет ничего общего с политиками выполнения или их изменением.Любая идея, почему я получаю эту ошибку?

Это на сервере Windows 2012 R2, где политика выполнения для всех уровней установлена ​​на удаленную подпись.Я работаю на PowerShell V4.0

Если я открою PowerShell или ISE и введу команду, которую он завершает, не показывая ошибку, которая возникает, только когда я пытаюсь запустить скрипт из файла .ps1.

Это ошибка:

Set-ExecutionPolicy : Windows PowerShell updated your execution policy
successfully, but the setting is overridden by a policy defined at a more
specific scope.  Due to the override, your shell will retain its current
effective execution policy of RemoteSigned. Type "Get-ExecutionPolicy -List"
to view your execution policy settings. For more information please see
"Get-Help Set-ExecutionPolicy".
At line:1 char:46
+ if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process  ...
+                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException
    + FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand

1 Ответ

0 голосов
/ 14 декабря 2018

Элемент контекстного меню "Run with PowerShell" для файлов .ps1 вызывает следующую командную строку:

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'"

Он хранится в разделе реестра HKCU\Microsoft.PowerShellScript.1\Shell\0\Command.Поскольку у вас есть политика выполнения, определенная с помощью групповой политики, установка конфликтующей политики выполнения в области «Процесс» всякий раз, когда вы запускаете сценарий PowerShell через его контекстное меню, вызывает ошибку, которую вы наблюдали.

Изменение командной строки в реестрепримерно так:

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -File "%L"

и ошибка исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...