UncleFather » 07 мар 2014 13:04, Пт
Проблема:
При попытке выполнить скрипт PowerShell получаем сообщение
Не удается загрузить файл MyScript.ps1 так как выполнение скриптов запрещено для данной системы. Введите "get-help about_signing" для получения дополнительных сведений.
Объяснение:
По умолчанию выполнение сценариев PowerShell в системе запрещено. Так как в скриптах может находится вредоносный код, который может нанести вред системе. По соображениям безопасности скрипты PowerShell должны быть подписаны цифровой подписью (либо можно пользоваться только одиночными командами PowerShell в интерактивном режиме, все прочие сценарии запрещены), такой подход называется политика выполнения.
Решение:
Изменить политику выполнения можно в интерактивном режиме (то есть непосредственно из оболочки PowerShell) командой:
здесь «НовоеЗначениеПолитики» может принимать одно из значений:
-
RemoteSigned - все ЛОКАЛЬНЫЕ сценарии PowerShell будут выполняться без подписи, а сценарии загруженные из интернета - с цифровой подписью надежного издателя
-
Restricted - (по умолчанию) все сценарии запрещены, можно пользоваться только одиночными командами PowerShell в интерактивном режиме
-
AllSigned - все сценарии должны иметь цифровую подпись надежного издателя. Перед выполнение сценариев надежных издателей запрашивается подтверждение
-
Unrestricted - разрешается выполнение любых сценариев PowerShell без проверки цифровой подписи
Итак, в нашем случае проделываем следующее:
-
Открываем оболочку PowerShell от имени Администратора
-
Создаем новую (чистую) вкладку. Поскольку, если мы попытаемся выполнять даже одиночные команды из вкладок ранее сохраненных скриптов, то опять же получим ошибку «Выполнение скриптов PowerShell запрещено для данной системы»
-
Выполняем команду
-
Соглашаемся с условиями
Теперь политика скриптов данного компьютера изменена на «RemoteSigned», в чем мы можем убедиться выполнив следующую команду:
Поскольку на этот момент политика выполнения скриптов уже должна быть изменена, то эту команду можно уже выполнять из любой вкладки оболочки PowerShell, либо вообще из командной строки.
[b][size=150]Проблема:[/size][/b]
При попытке выполнить скрипт PowerShell получаем сообщение [quote]Не удается загрузить файл MyScript.ps1 так как выполнение скриптов запрещено для данной системы. Введите "get-help about_signing" для получения дополнительных сведений.[/quote]
[spoiler title=При запуске из командной строки:][attachment=4]00.JPG[/attachment][/spoiler]
[spoiler title=При запуске скрипта из оболочки PowerShell][attachment=3]02.JPG[/attachment][/spoiler]
[b][size=150]Объяснение:[/size][/b]
По умолчанию выполнение сценариев PowerShell в системе запрещено. Так как в скриптах может находится вредоносный код, который может нанести вред системе. По соображениям безопасности скрипты PowerShell должны быть подписаны цифровой подписью (либо можно пользоваться только одиночными командами PowerShell в интерактивном режиме, все прочие сценарии запрещены), такой подход называется политика выполнения.
[b][size=150]Решение:[/size][/b]
Изменить политику выполнения можно в интерактивном режиме (то есть непосредственно из оболочки PowerShell) командой:
[code]Set-ExecutionPolicy НовоеЗначениеПолитики[/code]
здесь «[b][i]НовоеЗначениеПолитики[/i][/b]» может принимать одно из значений:
[list][*] [b][i]RemoteSigned[/i][/b] - все ЛОКАЛЬНЫЕ сценарии PowerShell будут выполняться без подписи, а сценарии загруженные из интернета - с цифровой подписью надежного издателя
[*] [b][i]Restricted[/i][/b] - (по умолчанию) все сценарии запрещены, можно пользоваться только одиночными командами PowerShell в интерактивном режиме
[*] [b][i]AllSigned[/i][/b] - все сценарии должны иметь цифровую подпись надежного издателя. Перед выполнение сценариев надежных издателей запрашивается подтверждение
[*] [b][i]Unrestricted[/i][/b] - разрешается выполнение любых сценариев PowerShell без проверки цифровой подписи[/list]
Итак, в нашем случае проделываем следующее:
[list=1][*] Открываем оболочку PowerShell от имени Администратора
[*] Создаем новую (чистую) вкладку. Поскольку, если мы попытаемся выполнять даже одиночные команды из вкладок ранее сохраненных скриптов, то опять же получим ошибку «Выполнение скриптов PowerShell запрещено для данной системы»
[spoiler title=Создаем новую вкладку:][attachment=1]03.JPG[/attachment][/spoiler]
[*] Выполняем команду
[code]Set-ExecutionPolicy RemoteSigned[/code]
[*] Соглашаемся с условиями
[spoiler title=Подтверждение изменения политики выполнения скриптов:][attachment=2]01.JPG[/attachment][/spoiler][/list]
Теперь политика скриптов данного компьютера изменена на «RemoteSigned», в чем мы можем убедиться выполнив следующую команду:
[code]Get-ExecutionPolicy[/code]
Поскольку на этот момент политика выполнения скриптов уже должна быть изменена, то эту команду можно уже выполнять из любой вкладки оболочки PowerShell, либо вообще из командной строки.
[spoiler title=Результат Get-ExecutionPolicy:][attachment=0]04.JPG[/attachment][/spoiler]