Когда я пытаюсь выполнить мой скрипт PowerShell, я получаю эту ошибку:
Файл C: \ Common \ Scripts \ hello.ps1 не может быть загружен, потому что выполнение скриптов отключено в этой системе. Подробнее см. «Get-help about_signing».
В строке: 1 символ: 13
+. \ hello.ps1 <<<<
+ CategoryInfo: NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId: RuntimeException
Запустите Windows PowerShell с параметром «Запуск от имени администратора». Только члены группы «Администраторы» на компьютере могут изменять политику выполнения.
Включить запуск неподписанных скриптов, введя:
set-executionpolicy remotesigned
Это позволит запускать неподписанные скрипты, которые вы пишете на локальном компьютере, и подписываться
скрипты из Интернета.
Смотрите также Запуск скриптов в Microsoft TechNet Library.
Политика выполнения по умолчанию ограничена, вы можете увидеть ее, набрав:
Get-ExecutionPolicy
Вы должны ввести следующее, чтобы перейти в неограниченный режим:
Set-ExecutionPolicy unrestricted
Надеюсь это поможет
На моей машине, которую я использую для сценариев dev, я буду использовать - неограниченно, как указано выше. Однако при развертывании моих сценариев к машине конечного пользователя я просто вызову powershell с помощью переключателя -executionpolicy:
powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1
Мы можем получить статус текущей ExecutionPolicy по следующей команде:
Get-ExecutionPolicy;
По умолчанию это ограниченный, Чтобы разрешить выполнение сценариев PowerShell, нам нужно установить эту ExecutionPolicy либо как байпас или неограниченный,
Мы можем установить политику для текущего пользователя как Bypass
или Unrestricted
используя любую из приведенных ниже команд PowerShell:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;
неограниченный политика загружает все файлы конфигурации и запускает все сценарии. Если вы запускаете неподписанный скрипт, который был загружен из Интернета, вам будет предложено получить разрешение до его запуска.
Если в байпас политики, ничто не блокируется, и во время выполнения сценария нет предупреждений или подсказок. Обход ExecutionPolicy более расслаблен, чем Unrestricted.
В зависимости от версии и конфигурации Windows у вас может быть следующее предупреждение, даже в Unrestricted
Режим:
Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the
Unblock-File cmdlet to allow the script to run without this warning message.
Do you want to run?
[D] Do not run [R] Run once [S] Suspend [?] Help (default is "D")
Решение состоит в том, чтобы использовать политику «обход», включенную с помощью следующей команды:
Set-ExecutionPolicy Bypass
Из документация:
Обход: ничто не блокируется, и никаких предупреждений и подсказок нет.
Это, очевидно, небезопасно, пожалуйста, поймите, какие риски.
Ключ с ключом:
Редактор реестра Windows версии 5.00
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ 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"
действительно работает.
Причина, по которой работает команда reg, заключается в том, что она делает именно то, что делают команды PS. Команды записывают изменения в ключи reg. Команды намного быстрее и проще, чем создавать рег-ключ или копаться в реестре.