PowerShell говорит: «В этой системе отключено выполнение сценариев». - PullRequest
1489 голосов
/ 28 октября 2010

Я пытаюсь запустить файл , который вызывает скрипт из cmd.exe, и я получаю следующую ошибку:

Management_Install.ps1 не может быть загружен, так как в этой системе отключено выполнение сценариев.

Я пробежал

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

и когда я запускаю Get-ExecutionPolicy из , я получаю Unrestricted обратно.

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

Файл C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1 не может быть загружен, так как в этой системе отключено выполнение сценариев. Пожалуйста, смотрите "get-help about_signing" для более подробной информации.

В строке: 1 символ: 25

  • .\Management_Install.ps1 <<<< 1 </p>

    • CategoryInfo: Не указано: (:) [], PSSecurityException

    • FullyQualifiedErrorId: RuntimeException

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

Система Windows Server 2008R2.

Что я делаю не так?

Ответы [ 23 ]

9 голосов
/ 25 августа 2012

Настройка политики выполнения зависит от среды. Если вы пытаетесь выполнить скрипт из запущенного x86 ISE , вам нужно использовать PowerShell x86 для установки политики выполнения. Аналогично, если вы используете 64-битный ISE, вы должны установить политику с помощью 64-битного PowerShell.

8 голосов
/ 03 октября 2017

Win + R , введите команду copy paste и нажмите OK :

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

И выполните свой сценарий.

Затем отменить изменения, как:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"
7 голосов
/ 30 декабря 2016

Вы также можете обойти это, используя следующую команду:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

Вы также можете прочитать эту статью Скотта Сазерленда, в которой объясняется 15 различных способов обхода PowerShell Set-ExecutionPolicy, если у вас нет прав администратора:

15 способов обойти политику выполнения PowerShell

5 голосов
/ 19 апреля 2018
  1. Откройте PowerShell от имени администратора и запустите Set-ExecutionPolicy -Scope CurrentUser
  2. Введите RemoteSigned и нажмите Enter
  3. Выполнить Set-ExecutionPolicy -Scope CurrentUser
  4. Введите Неограниченно и нажмите Enter
2 голосов
/ 29 мая 2015

В редакторе PowerShell ISE я обнаружил запуск следующих разрешенных скриптов следующей строки.

Set-ExecutionPolicy RemoteSigned -Scope Process
1 голос
/ 28 октября 2015

В PowerShell 2.0 политика выполнения по умолчанию была отключена.

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

В вашем случае введите Set-ExecutionPolicy RemoteSigned в консоли PowerShell и скажите «да».

1 голос
/ 08 октября 2016

Перейдите в путь реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell и установите ExecutionPolicy на RemoteSigned.

0 голосов
/ 10 ноября 2017

У меня была такая же проблема сегодня. 64-разрядная политика выполнения была неограниченной, а 32-разрядная - ограниченной.

Вот как удаленно изменить только 32-битную политику:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}
0 голосов
/ 20 октября 2014

Если вы находитесь здесь из-за запуска его с Ruby или Chef и использования `` системного выполнения, выполните следующее:

`powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

Эта командапредназначен для получения папки «MyDocuments».

-ExecutionPolicy Unrestricted делает свое дело.

Надеюсь, это будет полезно для кого-то другого.

0 голосов
/ 12 мая 2017

Откройте окно PowerShell от имени Администратор .Это будет работать.

...