Windows PowerShell. Выполнение сценариев отключено в этой системе

По умолчанию выполнение сценариев Windows PowerShell в системе запрещено. По соображениям безопасности все скрипты PowerShell должны быть подписаны цифровой подписью, данный метод называется - политика выполнения.

Если скрипт не соответствует этому условию, то выполнение сценариев PowerShell в системе запрещено. Это связано в первую очередь с тем, что в скрипте может находиться вредоносный код, который может нанести вред операционной системе.

PowerShell имеет несколько режимов выполнения, которые определяют, какой тип кода разрешается выполнять. Существует 5 различных режимов выполнения:

  1. Ограниченный (Restricted) — значение по умолчанию. Блокируется выполнение любых скриптов и разрешается работа интерактивных команд.
  2. Все подписанные (All Signed) — разрешено выполнение скриптов, имеющих цифровую подпись.
  3. Удаленные подписанные (Remote Signed) — локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.
  4. Неограниченный (Unrestricted) — разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.
  5. Обходной (Bypass) — ничего не блокируется, никакие предупреждения и запросы не появляются.

По умолчанию для PowerShell используется режим «Ограниченный». В этом режиме, PowerShell работает как интерактивная оболочка. Если вы ранее не настраивали PowerShell, то вместо работы скрипта вы увидите сообщение об ошибке, написанное красным шрифтом как на скриншоте ниже.

Самым безопасным способом решения этой проблемы является – изменение политики выполнения на неограниченную, запуск скрипта, и затем обратный возврат к ограниченной политике.

Для изменения политики выполнения на неограниченную, воспользуемся консолью PowerShell открытую с правами Администратора и выполним следующую команду:

Set-ExecutionPolicy Unrestricted

После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y (Да).

Теперь можно запустить скрипт. Однако, вы подвергаете систему серьезному риску, так что по окончании работы скрипта, не забудьте вернуть политику выполнения назад в ограниченный режим. Сделать это можно с помощью следующей команды:

Set-ExecutionPolicy Restricted

После запуска команды вам будет предложено подтвердить изменение политики выполнения. Ответим Y (Да)

Далее ниже представлены все команды для изменения политики выполнения.

Блокируется выполнение любых скриптов. Значение по умолчанию.

Set-ExecutionPolicy Restricted

Разрешено выполнение скриптов, имеющих цифровую подпись.

Set-ExecutionPolicy AllSigned

Скрипты, подготовленные на локальном компьютере, можно запускать без ограничений, скрипты, загруженные из Интернета - только при наличии цифровой подписи.

Set-ExecutionPolicy RemoteSigned

Разрешено выполнение любых скриптов. При запуске не подписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение.

Set-ExecutionPolicy Unrestricted

Ничего не блокируется, никакие предупреждения и запросы не появляются.

Set-ExecutionPolicy Bypass

Для выполнения выше представленных команд без подтверждения изменения, воспользуйтесь параметром -Force, например выполните команду:

Set-ExecutionPolicy Bypass -Force

Теперь при выполнении команд не нужно подтверждать производимые изменения.

WinNOTE
Добавить комментарий

  1. Правдолюб

    при запуске сценария в консоли ISE все работает.
    правой кнопкой на файл .ps1 — Выполнить с помощью Powershell — работает
    двойной клик на файл .ps1 — не работает. мелькает черное/синее окно и ничего.
    Win —>Powershell —> расположение файла —> х64 и х86 —> свойства -дополнительно запускать от имени администратора — включено.
    .ps1 —> свойства — Приложение — WindowsPowerShell
    Set-executionpolicy Unrestricted.
    Что я делаю не так? не могу запустить файл скрипта двойным кликом. Прошу помощи

    Ответить
  2. Zagid

    ВСЁ ОТЛИЧНО!!! АВТОРУ ОТСРОЧКИ И ШОКОЛАДА

    Ответить