Добрый всем день.
Для защиты от вредоносного кода в PS реализована система безопасности основанная на политиках выполнения. Каждая политика — это некий свод правил, которые определяют какой код можно выполнять, а какой нет. Каждый повершел сценарий может быть подписан цифровой подписью, что позволяет точно идентифицировать автора данного скрипта.
Существуют следующие политики выполнения (Execution Policy):
- Restricted — разрешает запуск любых команд, однако запрещает запуск любых скриптов.
- AllSigned — разрешает запуск любых команд, разрешает запуск скриптов подписанных сертификатом доверенного издателя.
- RemoteSigned — разрешает запуск любых команд, разрешает запуск скаченных из Интернета скриптов подписанных сертификатом доверенного издателя, разрешает запуск любых скриптов не скаченных из Интернета, даже без цифровой подписи.
- Unrestricted — разрешает запуск любых команд и любых скриптов. Спрашивает уведомление при запуске скриптов скаченных из Интернета.
- Bypass — разрешает запуск любых команд и любых скриптов.
- Undefined — политика не установлена.
Как вы понимаете для личного пользования рекомендуется использовать политику RemoteSigned. Она позволяет в полной мере насладится возможностями написания собственных сценариев повершел, однако реализует минимальный уровень безопасности. Для работы в корпоративной среде лучше подойдет политика AllSigned. Она обеспечит больший уровень безопасности.
Политики Execution Policy могут быть определены на следующих уровнях:
- Process — политика выполнения для текущего сеанса PowerShell. Устанавливается при запуске повершела «powershell -executionpolicy restricdet»
- CurrentUser — политика установленная для текущего пользователя.
- LocalMachine — политика установленная для компьютера.
Из всего вышесказанного можно сделать короткий вывод, что для работы в копроративной среде необходимо установить ExecutionPolicy в значение AllSigned на уровне LocalMachine.