Дополнительно
PowerShell говорит "выполнение сценариев отключено в этой системе"
Я пытаюсь запустить файл [tag:cmd], который вызывает сценарий [tag:powershell] из cmd.exe
, и получаю следующую ошибку:
Management_Install.ps1
не может быть загружен, поскольку выполнение сценариев отключено в этой системе.
Я запустил
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
и когда я запускаю Get-ExecutionPolicy
из [tag:powershell], я получаю 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 char:25
- `
.\Management_Install.ps1
<<<< 1
- CategoryInfo : NotSpecified: (:) [], PSSecurityException
- FullyQualifiedErrorId : RuntimeException
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE
Press any key to continue . . .
Система представляет собой Windows Server 2008R2.
Что я делаю неправильно?
1532
20
Если вы используете Windows Server 2008 R2, то существует x64 и x86 версии PowerShell, для обеих из которых должны быть установлены политики выполнения. Установили ли вы политику выполнения на обоих хостах?
Как администратор, вы можете установить политику выполнения, введя следующее в окно PowerShell:
Для получения дополнительной информации смотрите Использование команды Set-ExecutionPolicy Cmdlet.
Вы можете обойти эту политику, добавив
-ExecutionPolicy ByPass
при запуске PowerShellУ меня была похожая проблема, и я заметил, что по умолчанию
cmd
на Windows Server 2012, был запущен x64.В случае Windows 7, Windows 8, Windows 10, Windows Server 2008 R2 или Windows Server 2012, запустите следующие команды от имени Администратора:
x86 (32 bit)
Откройте
C:\Windows\SysWOW64\cmd.exe
Выполните команду
powershell Set-ExecutionPolicy RemoteSigned
.x64 (64 bit)
Откройте
C:\Windows\system32\cmd.exe
Выполните команду
powershell Set-ExecutionPolicy RemoteSigned
.Вы можете проверить режим с помощью
echo %PROCESSOR_ARCHITECTURE%
[Environment]::Is64BitProcess
References:
MSDN - Windows PowerShell execution policies
Windows - 32bit vs 64bit directory explanation
Большинство существующих ответов объяснить как, но очень немногие объяснить почему. И прежде чем вы идете вокруг выполнения кода с незнакомыми людьми в Интернете, особенно код, который отключает мер безопасности, вы должны точно понять что вы'повторно делать. Так вот's немного более подробно на этой проблеме.
С сайта TechNet страница о политиках выполнения:
Преимущества, которые, как отмечено основы PowerShell, в политике исполнения и подписи кода, являются:
Чтобы проверить вашу текущую политику выполнения, вы можете запустить
Гет-параметра ExecutionPolicy
. Но вы'повторно, вероятно, здесь, потому что вы хотите изменить его.Чтобы сделать это, вы'МР запустите установку параметра ExecutionPolicy в `` командлета.
Вы'll имеет два основных решения при обновлении политики выполнения.
# Исполнение Тип Политика#:
AllSigned
- все сценарии, которые бегали требует цифровую подпись.Значение RemoteSigned
- все удаленные скрипты (UNC) или загружены должны быть подписаны.Объем новых изменений
Значение LocalMachine
<суп>†</суп> - действие политики выполнения распространяется на всех пользователей компьютера.CurrentUser с
- действие политики выполнения распространяется только на текущего пользователя.Процесс
- действие политики выполнения распространяется только на текущий процесс Windows PowerShell для.<суп>† = по умолчанию</SUP и ГТ;
*Например: если вы хотите изменить политику RemoteSigned только для текущего пользователя, вы'd и выполните следующую команду:
Примечание: Для того, чтобы изменить политику выполнения, вы должны работать под управлением PowerShell в качестве администратора. Если вы находитесь в обычном режиме и попытаться изменить политику выполнения, вы'll получить следующее сообщение об ошибке:
Если вы хотите подтянуть внутренние ограничения на свои собственные скрипты, которые не были загружены из интернета (или, по крайней мере, Дон'т содержать метаданные в формате UNC), можно заставить политика работать только подписал sripts. Чтобы подписать свои собственные сценарии, вы можете следовать инструкциям на Скотт Хансельман'статья на подписании скриптов PowerShell.
Примечание: большинство людей, вероятно, чтобы получить эту ошибку, когда они открыть PowerShell, потому что первое, что ПС пытается сделать, когда он запускает выполнить ваш пользовательский скрипт профиль, однако устанавливает среду вам это нравится.
Файл обычно находится в:
Вы можете найти точное место, выполнив переменной PowerShell
Если там's ничего, что вас волнует в профиль, и Дон'т хотите возиться с настройки безопасности, вы можете просто удалить его и PowerShell выиграл'т найти ничего, что он не может выполнить.
В Windows 7:
Перейти к меню Пуск и поиск и"в Windows PowerShell с Исэ-то".
Щелкните правой кнопкой мыши на версии x86 и выбрать "и запуск от имени администратора" по.
В верхней части, вставить набор-параметра ExecutionPolicy RemoteSigned с`; запустите скрипт. Выберите "Да и".
Повторите эти шаги для 64-битной версии PowerShell ISE и тоже (не версию x86).
Я'м просто уточнение шагов, которые @Чад Миллер намекнул. Благодаря Чад!
Также выполнив эту команду перед тем, как сценарий и решает вопрос:
Если вы находитесь в среде, где вы не являетесь администратором, вы можете задать политику выполнения только для вас, и это не потребует администратор.
или
Вы можете прочитать все об этом в записи помочь.
Мы можем получить статус текущего параметра ExecutionPolicy` с помощью команды ниже:
По умолчанию это ограниченного. Чтобы разрешить выполнение скриптов PowerShell нужно установить этот параметра ExecutionPolicy либо как обойти или без ограничений.
Мы можем настроить политики для текущего пользователя как "обходная" или "свободный" с помощью любого из указанных ниже команд PowerShell:
Без ограничений политика загружает все конфигурационные файлы и запускает все скрипты. Если запустить неподписанный скрипт, который был загружен из интернета, выводится запрос на разрешение перед запуском.
В то время как в обойти политика, ничего не блокируется и нет никаких предупреждений или приглашений во время выполнения скрипта. Обход
параметра ExecutionPolicy
более расслабленным, чем "свободный".RemoteSigned: все скрипты, которые вы создали сами, будут запускаться, а все скрипты, загруженные из Интернета, должны быть подписаны доверенным издателем.
ОК, измените политику, просто набрав:
Я'м через на Windows 10 и не смог выполнить любую команду. Единственная команда, которая дала мне некоторые подсказки был такой:
[х64]
Но это не'т работу. Она была ограничена. Вероятно, новые правила безопасности для Windows10. У меня эта ошибка:
Поэтому я нашел другой способ (решение):
Теперь откройте PowerShell и наслаждайтесь ;)
Настройка политики выполнения определенной среде. Если вы пытаетесь выполнить скрипт из версии x86 Исэ Вы должны использовать х86 PowerShell, чтобы задать политику выполнения. Аналогичным образом, если запущена 64-разрядная Исе вы должны установить политику с 64-разрядной оболочки PowerShell.
<и>победа</роз> + <и>Р</КБД> и типа копировать вставить команду и нажмите клавишу <и>ОК</роз>:
И выполнить свой скрипт.
Затем вносите изменения как:
Вы также можете обойти это, используя следующую команду:
Вы также можете прочитать в этой статье Скотт Сазерленд, который объясняет 15 разных способов обхода набор-параметра ExecutionPolicy в PowerShell `` если вы Don'т иметь права администратора:
15 способов обхода политики выполнения PowerShell
В PowerShell Исэ редактор я нашел сначала выполнить следующую строку допускается скрипты.
У меня сегодня та же проблема. 64-разрядные политика выполнения не ограничивается, в то время как 32-разрядные был ограничен.
Здесь's, Как изменить только 32-разрядные политика удаленно:
Идите к пути реестра раздел HKEY_LOCAL_MACHINE\программное обеспечение\Майкрософт\PowerShell с\1\ShellIds\Майкрософт.В PowerShell "и установите значение" параметра ExecutionPolicy " на " значение RemoteSigned`.
В PowerShell 2.0, политику выполнения был отключен по умолчанию.
С тех пор, команда PowerShell имеет много улучшений, и они уверены, что пользователи не будут ломать вещи много сценариев. Так, начиная с PowerShell 4.0, он включен по умолчанию.
В вашем случае, тип набора-параметра ExecutionPolicy RemoteSigned с` из консоли PowerShell и сказать "да".
Некоторые ответы указывают на политику выполнения. Однако некоторые вещи требуют "и запуск от имени администратора" и также. Это безопаснее в том, что нет постоянного изменения политики выполнения, и может обойти ограничения администратора. Использовать с schedtask начать замес с:
как Джек Эдмондс выше, и Питер Мортенсен / Дхана пост https://stackoverflow.com/questions/8249705/how-to-run-an-application-as-run-as-administrator-from-the-command-prompt
Я нашел эту линию лучше для одного из моих сервер Windows 2008 сервера Р2. Пару других не было никаких проблем без этой линии в моем сценарии PowerShell: