Как включить выполнение сценариев PowerShell?

Когда я пытаюсь выполнить свой сценарий PowerShell, я получаю эту ошибку:

Файл C:\Common\Scripts\hello.ps1 не может быть загружен, потому что выполнение скриптов отключено в этой системе. Для получения дополнительной информации см. раздел "get-help about_signing".
В строке:1 char:13

  • .\hello.ps1 <<<<<
  • CategoryInfo : NotSpecified: (:) [], PSSecurityException
  • FullyQualifiedErrorId : RuntimeException
Решение
  1. Запустите Windows PowerShell с помощью опции "Запуск от имени администратора". Изменить политику выполнения могут только члены группы администраторов на компьютере.

  2. Включите запуск неподписанных сценариев, введя:

    set-executionpolicy remotesigned

Это позволит запускать неподписанные сценарии, которые вы пишете на своем локальном компьютере, и подписанные скрипты из Интернета.

См. также Выполнение сценариев в Microsoft TechNet Library.

Комментарии (8)

Политика выполнения по умолчанию установлена на ограничение, вы можете увидеть это, набрав:

Get-ExecutionPolicy

Чтобы перевести ее в неограниченный режим, нужно набрать следующее:

Set-ExecutionPolicy unrestricted

Надеюсь, это поможет

Комментарии (4)

На своей машине, которую я использую для разработки сценариев, я буду использовать -unrestricted, как указано выше. Однако при развертывании моих сценариев на машине конечного пользователя я просто вызову powershell с ключом -executionpolicy:

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1
Комментарии (3)

Мы можем получить статус текущего параметра ExecutionPolicy с помощью команды ниже:

Get-ExecutionPolicy;

По умолчанию это ограниченного. Чтобы разрешить выполнение скриптов PowerShell нужно установить этот параметра ExecutionPolicy либо как обойти или без ограничений.

Мы можем настроить политики для текущего пользователя как "обходная" или "свободный" с помощью любого из указанных ниже команду PowerShell:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

Без ограничений политика загружает все конфигурационные файлы и запускает все скрипты. Если запустить неподписанный скрипт, который был загружен из интернета, выводится запрос на разрешение перед запуском.

В то время как в обойти политика, ничего не блокируется и нет никаких предупреждений или приглашений во время выполнения скрипта. Обход параметра ExecutionPolicy более спокойно, чем без ограничений.

Комментарии (0)

В зависимости от версии и конфигурации Windows, вы можете иметь следующие предупреждения, даже в "свободный" режим:

предупреждение безопасности запускать только скрипты, которым Вы доверяете. А скрипты из интернета могут быть полезны, это сценарий может нанести вред вашему компьютеру. Если Вы доверяете этот сценарий, используйте разблокировать-файл командлет, чтобы разрешить выполнение сценария без этого предупреждения. вы хотите работать? [D] не выполнять [R] выполнить один раз [s] приостановить [?] Справка (по умолчанию является "Д" - а)

Решение заключается в использовании в "обход" и политики, включен с помощью следующей команды:

Set-ExecutionPolicy Bypass

От документация:

байпас: ничего не блокируется и нет никаких предупреждений или приглашений.

Это, очевидно, небезопасной, пожалуйста, понять возможные риски.

Комментарии (7)

Ключ reg с: Редактор Реестра Windows Версии 5.00

[политики реестра HKEY_LOCAL_MACHINE\SOFTWARE\корпорация Майкрософт\Windows В\с PowerShell] "и EnableScripts" в=в dword:00000001 "и параметра ExecutionPolicy-то"="в обход"и

и:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

действительно тоже работает.

Комментарии (0)

Почему командлет PowerShell не позволяют местным исполнения во всем мире, только на местный контекст пользователя. Если бы я попытался запустить скрипт PowerShell изнутри под Cygwin's в командной строке, например, который работает в рамках собственного контекста пользователя, он не будет работать, давая "не имеет цифровой подписи" и ошибка. Ответ был зайти в Редактор локальной групповой политики -> В политика "локальный компьютер" - и GT; Административные шаблоны -> Компоненты Windows -> в Windows PowerShell и дважды щелкните на 'включить выполнение скриптов'. Тогда это, позвольте мне изменить это 'включен' и тогда политики исполнения на "разрешить локальные скрипты и удаленные подписанные скрипты" и это работает во всем мире вне зависимости от контекста пользователя.

Комментарии (0)

Принятый ответ правильный, но изменение политики доступен только для текущего экземпляра в PowerShell, и, как только экземпляр PowerShell-это закрыли. Политики будут сброшены. Если пользователь открывает другой экземпляр PowerShell, политики по умолчанию будут применены, который "ограниченных"

Для меня, мне нужно использовать консоль VisualStudio код и G++ из Cygwin, чтобы построить вещи. Консоль с помощью PowerShell, с политикой по умолчанию, ничего не поделаешь. Одним из решений является изменение политики каждый раз в консоли запускается в консоли VisualStudio код, может скрипт изменения политики.

Я ленивый, поэтому другим решением является, когда я запускаю PowerShell в режиме администратора, аналогично тому, что принято отвечать вовсе. но с дополнительным параметром, который изменяет значения в таблице реестра. Как только это было сделано. Другие экземпляры PowerShell будет использовать значение RemoteSigned политики по умолчанию.

набор-параметра ExecutionPolicy RemoteSigned с -области currentUser`

Комментарии (0)

Настройка политики (правильно) - это самый лучший выбор, но на мой управляемые системы не имеют возможность изменять эту политику.

Для меня, самая простая работа-для смены политики, чтобы открыть скрипт в "в среде ISE и" выделите код (или часть кода), чтобы выполнить, а затем нажмите на "Выбор и" кнопку (или использовать клавишу F8, ярлык).

Это не самое лучшее решение & мало ли для автоматизации задач, но он позволяет мне использовать & полезности для PowerShell, а не обвинений в мой отдел.

Комментарии (0)

Причина в том, что ключ Рег работает, потому что он делает именно то, что команды ПС делают. Команды записи изменений в разделы реестра. Команды гораздо быстрее и проще, чем создать reg ключ или копаться в реестре.

Комментарии (1)