Почему мои сценарии powershell не выполняются?
Я написал простой пакетный файл в качестве сценария powershell, и я получаю ошибки при их запуске.
это в каталоге скриптов в моем пути.
Cannot be loaded because the execution of scripts is disabled on this system.
please see "get-help about-signing".
Я смотрел в справке, но это менее полезно.
7 ответов:
может быть уровень безопасности PowerShell по умолчанию, который (IIRC) будет запускать только подписанные сценарии.
попробуйте ввести этот:
set-executionpolicy remotesignedЭто позволит PowerShell разрешить выполнение локальных (то есть на локальном диске) неподписанных сценариев.
затем повторите выполнение скрипта.
вам нужно запустить set-executionpolicy:
Set-ExecutionPolicy Restricted <-- Will not allow any powershell scripts to run. Only individual commands may be run. Set-ExecutionPolicy AllSigned <-- Will allow signed powershell scripts to run. Set-ExecutionPolicy RemoteSigned <-- Allows unsigned local script and signed remote powershell scripts to run. Set-ExecutionPolicy Unrestricted <-- Will allow unsigned powershell scripts to run. Warns before running downloaded scripts. Set-ExecutionPolicy Bypass <-- Nothing is blocked and there are no warnings or prompts.надеюсь, что это помогает!
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Processвсегда использовать выше
cmdчтобы разрешить выполнение powershell в текущем сеансе.
я смог обойти эту ошибку, вызвав powershell следующим образом:
powershell -executionpolicy bypass -File .\MYSCRIPT.ps1то есть, я добавил
-executionpolicy bypassк тому, как я вызвал скрипт.это работало на Windows 7 с пакетом обновления 1. Я новичок в powershell, поэтому могут быть предостережения для этого, о которых я не знаю.
[Edit 2017-06-26] я продолжал использовать эту технику на других системах, включая windows 10 и Windows 2012r2 без проблем.
вот что я используя сейчас. Это удерживает меня от случайного запуска скрипта, нажав на него. Когда я запускаю его в планировщике, я добавляю один аргумент:" планировщик", и это обходит приглашение.
Это также приостанавливает окно в конце, чтобы я мог видеть вывод powershell.
if NOT "%1" == "scheduler" ( @echo looks like you started the script by clicking on it. @echo press space to continue or control C to exit. pause ) C: cd \Scripts powershell -executionpolicy bypass -File .\rundps.ps1 set psexitcode=%errorlevel% if NOT "%1" == "scheduler" ( @echo Powershell finished. Press space to exit. pause ) exit /b %psexitcode%
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Processэта команда работает для меня, даже когда происходит следующая ошибка:
Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\ShellIds\Microsoft.PowerShell' is denied.
команда
set-executionpolicy unrestrictedпозволит любой скрипт, который вы создаете для запуска от имени вошедшего в систему пользователя. Просто не забудьте установить параметр executionpolicy обратно в signed с помощьюset-executionpolicy signedкоманда перед выходом из системы.
Comments