Проблема:
При попытке выполнить скрипт PowerShell получаем сообщение
Не удается загрузить файл MyScript.ps1 так как выполнение скриптов запрещено для данной системы. Введите "get-help about_signing" для получения дополнительных сведений.
При запуске из командной строки:
При запуске скрипта из оболочки PowerShell
Объяснение:
По умолчанию выполнение сценариев PowerShell в системе запрещено. Так как в скриптах может находится вредоносный код, который может нанести вред системе. По соображениям безопасности скрипты PowerShell должны быть подписаны цифровой подписью (либо можно пользоваться только одиночными командами PowerShell в интерактивном режиме, все прочие сценарии запрещены), такой подход называется политика выполнения.
Решение:
Изменить политику выполнения можно в интерактивном режиме (то есть непосредственно из оболочки PowerShell) командой:
Код: Выделить всё
Set-ExecutionPolicy НовоеЗначениеПолитики
здесь «НовоеЗначениеПолитики» может принимать одно из значений:
-
RemoteSigned - все ЛОКАЛЬНЫЕ сценарии PowerShell будут выполняться без подписи, а сценарии загруженные из интернета - с цифровой подписью надежного издателя
-
Restricted - (по умолчанию) все сценарии запрещены, можно пользоваться только одиночными командами PowerShell в интерактивном режиме
-
AllSigned - все сценарии должны иметь цифровую подпись надежного издателя. Перед выполнение сценариев надежных издателей запрашивается подтверждение
-
Unrestricted - разрешается выполнение любых сценариев PowerShell без проверки цифровой подписи
Итак, в нашем случае проделываем следующее:
-
Открываем оболочку PowerShell от имени Администратора
-
Создаем новую (чистую) вкладку. Поскольку, если мы попытаемся выполнять даже одиночные команды из вкладок ранее сохраненных скриптов, то опять же получим ошибку «Выполнение скриптов PowerShell запрещено для данной системы»
Создаем новую вкладку:
-
Выполняем команду
Код: Выделить всё
Set-ExecutionPolicy RemoteSigned
-
Соглашаемся с условиями
Подтверждение изменения политики выполнения скриптов:
Теперь политика скриптов данного компьютера изменена на «RemoteSigned», в чем мы можем убедиться выполнив следующую команду:
Код: Выделить всё
Get-ExecutionPolicy
Поскольку на этот момент политика выполнения скриптов уже должна быть изменена, то эту команду можно уже выполнять из любой вкладки оболочки PowerShell, либо вообще из командной строки.