Политики выполнения сценариев
Политика выполнения (execution policy) оболочки PowerShell определяет, можно ли на данном компьютере выполнять сценарии PowerShell, и если да, должны ли они быть подписаны цифровой подписью. Кроме того, политика выполнения определяет, можно ли загружать конфигурационные файлы при запуске оболочки. Политика выполнения PowerShell хранится в реестре операционной системы и не удаляется даже при переустановке оболочки PowerShell.
Возможные политики выполнения PowerShell описаны в табл. 19.1 (получить аналогичную информацию в PowerShell можно с помощью команды Get-Help about_signing ).
Таблица 19.1. Политики выполнения PowerShell | |
Название политики | Описание |
Restricted | Данная политика выполнения используется по умолчанию, она запрещает выполнение сценариев и загрузку конфигурационных файлов (можно пользоваться только одиночными командами PowerShell в интерактивном режиме) |
AllSigned | Выполнение сценариев PowerShell разрешено, однако все сценарии (как загруженные из Интернета, так и локальные) должны иметь цифровую подпись надежного издателя. Перед выполнением сценариев надежных издателей запрашивается подтверждение |
RemoteSigned | Выполнение сценариев PowerShell разрешено, при этом все сценарии и файлы конфигураций, загруженные из Интернета (в том числе по электронной почте и с помощью программ мгновенного обмена сообщениями), должны иметь цифровую подпись надежного издателя, а локальные сценарии могут быть неподписанными. При запуске сценариев надежных издателей подтверждение не запрашивается |
Unrestricted | Разрешается выполнение любых сценариев PowerShell без проверки цифровой подписи. При запуске сценариев и файлов конфигураций, загруженных из Интернета, выдается предупреждение |
Узнать, какая политика выполнения является активной, можно с помощью командлета Get-ExecutionPolicy:
PS C:\> Get-ExecutionPolicy
Restricted
Командлет Set-ExecutionPolicy позволяет сменить политику выполнения. Например, для установки политики выполнения RemoteSignedнужно выполнить следующую команду:
Set-ExecutionPolicy RemoteSigned
Проверим снова текущую политику:
PS C:\> Get-ExecutionPolicy
RemoteSigned
Теперь вновь попробуем запустить наш сценарий:
PS C:\> C:\script\test.ps1
Эта строка печатается из сценария PowerShell
Как мы видим, сценарий test1.ps1 успешно выполнен.
При запуске сценариев PowerShell следует учесть, что путь к файлу с кодом нужно всегда указывать явно, даже если сценарий находится в текущем каталоге. В противном случае сценарий не будет выполнен, например:
PS C:\> cd script
PS C:\script> dir
Каталог: Microsoft.PowerShell.Core\FileSystem::C:\script
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 09.12.2016 17:37 59 test.ps1
PS C:\script> test.ps1
Условие "test.ps1" не распознано как командлет, функция, выполняемая программа или файл сценария. Проверьте условие и повторите попытку.
В строка:1 знак:9
+ test.ps1 <<<<
Напомним, что для текущего каталога в системе зарезервировано имя . (точка). Сценарий в текущем каталоге запускается следующим образом:
PS C:\script> .\test.ps1
Эта строка печатается из сценария PowerShell
Для запуска сценария PowerShell непосредственно из командной строки интерпретатора Cmd.exe или с помощью пункта Выполнить (Run) меню Пуск (Start) нужно указать полный путь к этому сценарию после в качестве параметра программы powershell.exe, например:
C:\> powershell.exe C:\script\test.ps1
Дата добавления: 2018-03-01; просмотров: 496;