Я пытаюсь запустить CMD файл, который вызывает PowerShellсценарий cmd.exe
, и я получаю сообщение об ошибке ниже:
Management_Install.ps1
не может быть загружен, потому что выполнение сценариев отключено в этой системе.
Я бегал
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
и когда я убегаю Get-ExecutionPolicy
от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 символ: 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.
Что я делаю неправильно?
Get-ExecutionPolicy -List
.Ответы:
Если вы используете Windows Server 2008 R2, то существует версия PowerShell для x64 и x86, для каждой из которых должна быть установлена политика выполнения. Вы установили политику выполнения на обоих хостах?
Как администратор , вы можете установить политику выполнения, набрав это в окне PowerShell:
Для получения дополнительной информации см. Использование командлета Set-ExecutionPolicy .
Когда вы закончите, вы можете установить политику обратно к ее значению по умолчанию с помощью:
источник
Set-ExecutionPolicy Restricted
кажется, это способ отменить это, если вы хотите вернуть разрешения обратно, как они были: technet.microsoft.com/en-us/library/ee176961.aspx . Метод временного обхода@Jack Edmonds
выглядит для меня более безопасным:powershell -ExecutionPolicy ByPass -File script.ps1
Get-ExecutionPolicy -List
которые помогли мне увидеть различные области. КомандаGet-ExecutionPolicy
не показывает все области. ВImport-Module SQLPS
настоящее время работает с политика изменилась следующим образом :{Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}
.Вы можете обойти эту политику для одного файла, добавив
-ExecutionPolicy Bypass
при запуске PowerShellисточник
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass
на моей панели задач.type script.ps1 | powershell -
не менее, вызов ps1 из .bat при действии работает..ps1
и случайно запустить то, что они не хотели. Это произойдет с.bat
файламиУ меня была похожая проблема, и я заметил, что по умолчанию
cmd
в Windows Server 2012 использовалась версия x64.Для Windows 7 , Windows 8 , Windows 10 , Windows Server 2008 R2 или Windows Server 2012 выполните следующие команды как администратора :
x86 (32 бита)
открытый
C:\Windows\SysWOW64\cmd.exe
Запустить команду
powershell Set-ExecutionPolicy RemoteSigned
х64 (64 бит)
Открыть
C:\Windows\system32\cmd.exe
Запустить команду
powershell Set-ExecutionPolicy RemoteSigned
Вы можете проверить режим, используя
echo %PROCESSOR_ARCHITECTURE%
[Environment]::Is64BitProcess
Ссылки:
MSDN - Windows PowerShell политики выполнения
Windows - 32-битная или 64-битная директория объяснения
источник
Большинство существующих ответов объясняют как , но очень немногие объясняют почему . И прежде чем вы начнете выполнять код от незнакомцев в Интернете, особенно код, который отключает меры безопасности, вы должны точно понимать, что вы делаете. Итак, вот немного подробнее по этой проблеме.
Со страницы TechNet о политике исполнения :
Преимущества, которые перечислены в Основах PowerShell - Политика выполнения и Подписание кода :
Чтобы проверить текущую политику выполнения, вы можете запустить
Get-ExecutionPolicy
. Но вы, вероятно, здесь, потому что вы хотите изменить это.Для этого вы запустите
Set-ExecutionPolicy
командлет.При обновлении политики выполнения вам нужно будет принять два основных решения.
Тип политики выполнения:
Restricted
† - Никакой сценарий, локальный, удаленный или загруженный, не может быть выполнен в системе.AllSigned
- Все запущенные сценарии должны иметь цифровую подпись.RemoteSigned
- Все удаленные сценарии (UNC) или загруженные должны быть подписаны.Unrestricted
- Нет подписи для любого типа сценария не требуется.Сфера нового изменения
LocalMachine
† - Политика выполнения влияет на всех пользователей компьютера.CurrentUser
- Политика выполнения влияет только на текущего пользователя.Process
- Политика выполнения влияет только на текущий процесс Windows PowerShell.† = по умолчанию
Например : если вы хотите изменить политику на RemoteSigned только для CurrentUser, вы должны выполнить следующую команду:
Примечание . Чтобы изменить политику выполнения, необходимо запустить PowerShell As Adminstrator . Если вы находитесь в обычном режиме и пытаетесь изменить политику выполнения, вы получите следующую ошибку:
Если вы хотите ужесточить внутренние ограничения для своих собственных сценариев, которые не были загружены из Интернета (или, по крайней мере, не содержат метаданных UNC), вы можете принудить политику запускать только подписанные сценарии. Чтобы подписать свои собственные сценарии, вы можете следовать инструкциям в статье Скотта Хансельмана « Подписание сценариев PowerShell» .
Примечание : большинство людей, вероятно, получат эту ошибку всякий раз, когда они открывают Powershell, потому что первое, что PS пытается сделать при запуске, - это запустить скрипт профиля пользователя, который настраивает вашу среду так, как вам нравится.
Файл обычно находится в:
Вы можете найти точное местоположение, запустив переменную powershell
Если в профиле нет ничего, что вас волнует, и вы не хотите суетиться со своими настройками безопасности, вы можете просто удалить его, и PowerShell не найдет ничего, что он не сможет выполнить.
источник
Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -
.-ExecutionPolicy ByPass
однако, какова цель этой политики в любом случае? Это просто для того, чтобы пользователи не могли случайно открыть консоль PowerShell и запустить вредоносный скрипт? Разве злоумышленник не может просто использовать исполняемый файл или пакетный скрипт, если он хочет обойти это? Даже после прочтения комментария @BaconBits я не совсем уверен, какой сценарий предназначен для предотвращения этой политики ...В Windows 7:
Перейдите в меню «Пуск» и выполните поиск «Windows PowerShell ISE».
Щелкните правой кнопкой мыши версию x86 и выберите «Запуск от имени администратора».
В верхней части вставьте
Set-ExecutionPolicy RemoteSigned
; запустить скрипт Выберите «Да».Повторите эти шаги для 64-разрядной версии Powershell ISE (не для версии x86).
Я просто проясняю шаги, на которые намекнул @Chad Miller. Спасибо Чад!
источник
Также выполнение этой команды перед сценарием также решает проблему:
источник
RemoteSigned
прежде чем снимать все ограничения в вашей политике безопасности. Если это не сработает, тогда переоцените свои болевые точки и почему это не работает. Вы можете установитьunrestricted
в качестве последнего средства, но это не должно быть вашей отправной точкой.Remotesigned
.Если вы находитесь в среде, где вы не являетесь администратором, вы можете установить Политику выполнения только для вас, и для этого не потребуется администратор.
или
Вы можете прочитать все об этом в справочной записи.
источник
Set-ExecutionPolicy Unrestricted
администратор не казался достаточно «неограниченным», чтобы реально помочь.RemoteSigned: все созданные вами сценарии будут запущены, и все сценарии, загруженные из Интернета, должны быть подписаны доверенным издателем.
ОК, измените политику, просто набрав:
источник
Мы можем получить статус current
ExecutionPolicy
командой ниже:По умолчанию это ограничено . Чтобы разрешить выполнение сценариев PowerShell, нам нужно установить для этого параметра ExecutionPolicy значение Bypass или Unrestricted .
Мы можем установить политику для текущего пользователя как
Bypass
илиUnrestricted
используя любую из следующих команд PowerShell:Неограниченная политика загружает все файлы конфигурации и запускает все сценарии. Если вы запускаете неподписанный скрипт, который был загружен из Интернета, вам будет предложено разрешение перед его запуском.
Принимая во внимание, что в политике обхода ничего не блокируется, и нет никаких предупреждений или подсказок во время выполнения скрипта. Обход
ExecutionPolicy
более расслаблен, чемUnrestricted
.источник
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
AKA быстрый и грязный способ сказать VS2015 прекратить жаловаться и запустить мой кровавый сценарий. Спасибо. спасатель.Я использую Windows 10 и не смог запустить какую-либо команду. Единственная команда, которая дала мне некоторые подсказки, была такая:
[64]
Но это не сработало. Это было ограничено. Вероятно, новые политики безопасности для Windows10. У меня была эта ошибка:
Поэтому я нашел другой способ ( решение ):
Теперь откройте PowerShell и наслаждайтесь;)
источник
Set-ExecutionPolicy RemoteSigned
Unrestricted
. Лучше практиковатьсяRemoteSigned
Настройка политики выполнения зависит от среды. Если вы пытаетесь выполнить сценарий из работающего x86 ISE, вам нужно использовать x86 PowerShell для установки политики выполнения. Аналогично, если вы используете 64-битный ISE, вы должны установить политику с 64-битным PowerShell.
источник
Win+ Rи введите команду copy paste и нажмите OK:
И выполнить свой сценарий.
Затем отменить изменения, такие как:
источник
Вы также можете обойти это, используя следующую команду:
Вы также можете прочитать эту статью Скотта Сазерленда, в которой объясняется 15 различных способов обхода PowerShell,
Set-ExecutionPolicy
если у вас нет прав администратора:15 способов обойти политику выполнения PowerShell
источник
источник
Вы можете попробовать это и выбрать опцию «Все»
источник
В редакторе PowerShell ISE я обнаружил, что в следующей строке сначала разрешены сценарии.
источник
В PowerShell 2.0 политика выполнения была отключена по умолчанию.
С тех пор команда PowerShell внесла множество улучшений, и они уверены, что пользователи не будут сильно ломать голову при выполнении сценариев. Таким образом, начиная с PowerShell 4.0, он включен по умолчанию.
В вашем случае введите
Set-ExecutionPolicy RemoteSigned
с консоли PowerShell и скажите «да».источник
У меня была такая же проблема сегодня. 64-разрядная политика выполнения была неограниченной, в то время как 32-разрядная была ограничена.
Вот как можно изменить только 32-битную политику:
источник
Перейдите в путь реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
и установитеExecutionPolicy
дляRemoteSigned
.источник
Я получаю еще одно предупреждение, когда пытаюсь запустить
Set-ExecutionPolicy RemoteSigned
Я решил с помощью этой команды
источник
Если вы здесь из-за того, что запускаете его с Ruby или Chef и используете `` системное выполнение, выполните следующее:
Эта команда предназначена для получения папки «MyDocuments».
-ExecutionPolicy Unrestricted
делает трюк.Я надеюсь, что это полезно для кого-то еще.
источник
Несколько ответов указывают на политику выполнения. Однако для некоторых вещей требуется также «администратор рун». Это наиболее безопасно, поскольку нет никаких постоянных изменений в политике выполнения, и может быть преодолено ограничение администратора. Используйте с schedtask, чтобы начать партию с:
как от Джек Эдмондс выше, так и от Питера Мортенсена / Дхана из поста Как запустить приложение как «запуск от имени администратора» из командной строки?
источник
Я обнаружил, что эта линия работает лучше всего для одного из моих серверов Windows Server 2008 R2. У пары других не было проблем без этой строки в моих скриптах PowerShell:
источник
Откройте консоль Powershell от имени администратора и установите политику выполнения
источник
Вы можете использовать специальный способ обойти это:
Он передает содержимое сценария powershell в powershell.exe и выполняет его в обход политики выполнения.
источник
Это решило мою проблему
Откройте Windows
PowerShell
Command и выполните запрос ниже, чтобы изменитьExecutionPolicy
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
если он запрашивает подтверждение изменений, нажмите «Y» и нажмите ввод.
источник
Запустить
Set-ExecutionPolicy RemoteSigned
командуисточник
используйте эту команду
источник
Откройте cmd вместо powershell. Это помогло мне ...
источник
Откройте окно PowerShell от имени администратора . Это будет работать.
источник