Дополнительно
Как включить выполнение сценариев PowerShell?
Когда я пытаюсь выполнить свой сценарий PowerShell, я получаю эту ошибку:
Файл C:\Common\Scripts\hello.ps1 не может быть загружен, потому что выполнение скриптов отключено в этой системе. Для получения дополнительной информации см. раздел "get-help about_signing".
В строке:1 char:13
- .\hello.ps1 <<<<<
- CategoryInfo : NotSpecified: (:) [], PSSecurityException
- FullyQualifiedErrorId : RuntimeException
273
10
Запустите Windows PowerShell с помощью опции "Запуск от имени администратора". Изменить политику выполнения могут только члены группы администраторов на компьютере.
Включите запуск неподписанных сценариев, введя:
Это позволит запускать неподписанные сценарии, которые вы пишете на своем локальном компьютере, и подписанные скрипты из Интернета.
См. также Выполнение сценариев в Microsoft TechNet Library.
Политика выполнения по умолчанию установлена на ограничение, вы можете увидеть это, набрав:
Чтобы перевести ее в неограниченный режим, нужно набрать следующее:
Надеюсь, это поможет
На своей машине, которую я использую для разработки сценариев, я буду использовать -unrestricted, как указано выше. Однако при развертывании моих сценариев на машине конечного пользователя я просто вызову powershell с ключом -executionpolicy:
Мы можем получить статус текущего параметра ExecutionPolicy с помощью команды ниже:
По умолчанию это ограниченного. Чтобы разрешить выполнение скриптов PowerShell нужно установить этот параметра ExecutionPolicy либо как обойти или без ограничений.
Мы можем настроить политики для текущего пользователя как "обходная" или "свободный" с помощью любого из указанных ниже команду PowerShell:
Без ограничений политика загружает все конфигурационные файлы и запускает все скрипты. Если запустить неподписанный скрипт, который был загружен из интернета, выводится запрос на разрешение перед запуском.
В то время как в обойти политика, ничего не блокируется и нет никаких предупреждений или приглашений во время выполнения скрипта. Обход параметра ExecutionPolicy более спокойно, чем без ограничений.
В зависимости от версии и конфигурации Windows, вы можете иметь следующие предупреждения, даже в "свободный" режим:
Решение заключается в использовании в "обход" и политики, включен с помощью следующей команды:
От документация:
Это, очевидно, небезопасной, пожалуйста, понять возможные риски.
Ключ reg с: Редактор Реестра Windows Версии 5.00
и:
действительно тоже работает.
Почему командлет PowerShell не позволяют местным исполнения во всем мире, только на местный контекст пользователя. Если бы я попытался запустить скрипт PowerShell изнутри под Cygwin's в командной строке, например, который работает в рамках собственного контекста пользователя, он не будет работать, давая "не имеет цифровой подписи" и ошибка. Ответ был зайти в Редактор локальной групповой политики -> В политика "локальный компьютер" - и GT; Административные шаблоны -> Компоненты Windows -> в Windows PowerShell и дважды щелкните на 'включить выполнение скриптов'. Тогда это, позвольте мне изменить это 'включен' и тогда политики исполнения на "разрешить локальные скрипты и удаленные подписанные скрипты" и это работает во всем мире вне зависимости от контекста пользователя.
Принятый ответ правильный, но изменение политики доступен только для текущего экземпляра в PowerShell, и, как только экземпляр PowerShell-это закрыли. Политики будут сброшены. Если пользователь открывает другой экземпляр PowerShell, политики по умолчанию будут применены, который "ограниченных"
Для меня, мне нужно использовать консоль VisualStudio код и G++ из Cygwin, чтобы построить вещи. Консоль с помощью PowerShell, с политикой по умолчанию, ничего не поделаешь. Одним из решений является изменение политики каждый раз в консоли запускается в консоли VisualStudio код, может скрипт изменения политики.
Я ленивый, поэтому другим решением является, когда я запускаю PowerShell в режиме администратора, аналогично тому, что принято отвечать вовсе. но с дополнительным параметром, который изменяет значения в таблице реестра. Как только это было сделано. Другие экземпляры PowerShell будет использовать значение RemoteSigned политики по умолчанию.
набор-параметра ExecutionPolicy RemoteSigned с -области currentUser`
Настройка политики (правильно) - это самый лучший выбор, но на мой управляемые системы не имеют возможность изменять эту политику.
Для меня, самая простая работа-для смены политики, чтобы открыть скрипт в "в среде ISE и" выделите код (или часть кода), чтобы выполнить, а затем нажмите на "Выбор и" кнопку (или использовать клавишу F8, ярлык).
Это не самое лучшее решение & мало ли для автоматизации задач, но он позволяет мне использовать & полезности для PowerShell, а не обвинений в мой отдел.
Причина в том, что ключ Рег работает, потому что он делает именно то, что команды ПС делают. Команды записи изменений в разделы реестра. Команды гораздо быстрее и проще, чем создать reg ключ или копаться в реестре.