PowerShell: Принудительно запустить неподписанный скрипт

Для защиты от запуска PowerShell скриптов в системе можно включить ограничительную политику. Я себе установил режим AllSigned — запуск только скриптов с цифровой подписью, и все время на нее и уповал до тех пор, пока не нашел способ запустить выполнение .ps1 скрипта, не имеющего цифровой подписи. Для этого нужно было просто дописать ключ -ExecutionPolicy Bypass:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -command "& 'C:\Program Files (x86)\MyScripts\TestScript.ps1'"

Данный параметр перезаписывает локальные настройки реестра на время выполнения скрипта или команды!

И есть еще около 14 способов!!! обойти подобное ограничение!

Небольшая защита от этого все же есть.
Для тех, у кого есть доступ к глобальным политикам, можно включить политику и тогда скрипты можно будет запустить интерактивно только из консоли PowerShell — ну хоть что-то:
Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell -> Turn on Script Execution
Для этой политики ставим значение Enabled и в качестве опции выбираем Allow only signed scripts

При этом другие параметры -Command и —EncodedCommand игнорируют эту политику! Поэтому для параноиков лучше вообще запретить выполнение PowerShell :)



Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments