Почему мои сценарии PowerShell не работают?

powershell

126208 просмотра

7 ответа

Я написал простой командный файл как скрипт PowerShell, и я получаю ошибки, когда они запускаются.

Он находится в каталоге сценариев на моем пути.

Cannot be loaded because the execution of scripts is disabled on this system. 
please see "get-help about-signing".

Я посмотрел в помощь, но это было не так полезно.

Автор: DevelopingChris Источник Размещён: 17.05.2019 03:31

Ответы (7)


95 плюса

Решение

Это может быть уровень безопасности PowerShell по умолчанию, который (IIRC) будет запускать только подписанные скрипты.

Попробуйте ввести следующее:

set-executionpolicy remotesigned

Это позволит PowerShell разрешить запуск неподписанных скриптов локальных (то есть на локальном диске) сценариев.

Затем попробуйте выполнить свой скрипт еще раз.

Автор: Matt Hamilton Размещён: 14.08.2008 03:41

61 плюса

Вам нужно запустить 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.
Автор: Nadeem_MK Размещён: 14.11.2013 10:15

14 плюса

Использование:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Всегда используйте приведенную выше команду, чтобы включить выполнение PowerShell в текущем сеансе.

Автор: Naveen Размещён: 22.04.2013 07:16

11 плюса

Мне удалось обойти эту ошибку, вызвав PowerShell следующим образом:

powershell -executionpolicy bypass -File .\MYSCRIPT.ps1

То есть, я добавил -executionpolicy bypassспособ, которым я вызывал скрипт.

Это работало в Windows 7 с пакетом обновления 1. Я новичок в PowerShell, поэтому могут быть оговорены действия, которые я не знаю.

[Edit 2017-06-26] Я продолжал использовать эту технику на других системах, включая Windows 10 и Windows 2012 R2, без проблем.

Вот что я сейчас использую. Это мешает мне случайно запустить скрипт, щелкнув по нему. Когда я запускаю его в планировщике, я добавляю один аргумент: «scheduler» и обходит приглашение.

Это также останавливает окно в конце, поэтому я могу видеть вывод 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%
Автор: Michael Potter Размещён: 30.11.2015 08:13

5 плюса

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

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

Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.
Автор: user3335140 Размещён: 21.02.2014 12:23

5 плюса

Также стоит знать, что вам может потребоваться включить .\перед именем скрипта. Например:

.\scriptname.ps1
Автор: Leon Bambrick Размещён: 14.08.2008 03:47

1 плюс

Команда set-executionpolicy unrestrictedпозволит любому скрипту, который вы создаете, запустить как зарегистрированный пользователь. Просто не забудьте установить для параметра executepolicy значение, подписанное с помощью set-executionpolicy signedкоманды до выхода из системы.

Автор: ExchangeAdmin Размещён: 18.07.2012 08:23
Вопросы из категории :
32x32