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

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

  

Файл C: \ Common \ Scripts \ hello.ps1 не может быть загружен, так как выполнение скриптов в этой системе отключено. Дополнительную информацию см. В разделе «get-help about_signing».
  По строке: 1 символ: 13
  +. \ hello.ps1 <<<<<       + CategoryInfo: NotSpecified: (:) [], PSSecurityException
      + FullyQualifiedErrorId: RuntimeException

180 голосов | спросил Pavel Chuchuva 8 FebruaryEurope/MoscowbMon, 08 Feb 2010 21:41:03 +0300000000pmMon, 08 Feb 2010 21:41:03 +030010 2010, 21:41:03

7 ответов


268
  1. Запустите Windows PowerShell с параметром «Запуск от имени администратора». Только члены группы «Администраторы» на компьютере могут изменять политику выполнения.

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

    set-executionpolicy remotesigned
    

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

См. также Запуск сценариев в Microsoft TechNet Library.

ответил Pavel Chuchuva 8 FebruaryEurope/MoscowbMon, 08 Feb 2010 21:44:16 +0300000000pmMon, 08 Feb 2010 21:44:16 +030010 2010, 21:44:16
59

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

Get-ExecutionPolicy

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

Set-ExecutionPolicy unrestricted

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

ответил William Hilsum 8 FebruaryEurope/MoscowbMon, 08 Feb 2010 21:43:25 +0300000000pmMon, 08 Feb 2010 21:43:25 +030010 2010, 21:43:25
48

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

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1
ответил MDMoore313 14 Jam1000000amMon, 14 Jan 2013 04:46:49 +040013 2013, 04:46:49
6

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

Get-ExecutionPolicy;

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

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

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

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

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

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

ответил Pratik Patil 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 07 Sep 2016 10:06:18 +0300 2016, 10:06:18
3

В зависимости от версии и конфигурации 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

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

  

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

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

ответил Benoit Blanchon 21 Jpm1000000pmThu, 21 Jan 2016 13:01:36 +030016 2016, 13:01:36
1

Ключ с ключом:
Редактор реестра 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"

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

ответил Giesbert Schipper 29 32017vEurope/Moscow11bEurope/MoscowWed, 29 Nov 2017 13:10:20 +0300 2017, 13:10:20
-1

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

ответил keith 5 PMpThu, 05 Apr 2018 16:49:49 +030049Thursday 2018, 16:49:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132