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

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

Это в каталоге скриптов на моем пути. Это ошибка, которую я получаю:

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

Я посмотрел в помощь, но это менее чем полезно.

14.08.2008 03:39:17
8 ОТВЕТОВ
РЕШЕНИЕ

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

Попробуйте набрать это:

set-executionpolicy remotesigned

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

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

98
6.09.2019 16:15:55
Вы должны запустить Powershell с правами администратора, по крайней мере, под Windows 8!
ComFreek 24.08.2012 11:48:04
И вам также нужно запустить сценарий PowerShell с правами администратора в Windows 7.
Rod 28.02.2014 20:26:42
Это довольно страшный ответ. С одной стороны, он постоянно изменяет уровень безопасности Powershell по умолчанию, возможно, нежелательными (и небезопасными) способами. С другой стороны, он не может даже адекватно объяснить, что подписанным удаленным сценариям и неподписанным локальным сценариям - но не неподписанным удаленным сценариям, которые иногда требуется Chocolatey - будут предоставлены привилегии выполнения. Большинство пользователей, вероятно, хотят это и это вместо этого.
Cecil Curry 7.06.2016 06:30:40
Хотя Сесил обеспокоен некоторыми слабостями в ответе, справедливо, я хотел бы отметить несколько вещей. 1) Его две ссылки открывают мне одну и ту же страницу. 2) Если вы хотите, чтобы сценарии выполнялись просто, настройка политики выполнения, вероятно, все еще остается подходом, и, возможно, не связана с OP: 3) кажется, что лучшая политика для сценариев запуска, укажите политику выполнения и область действия в командной строке. запустить скрипт и для входа в систему настроить конфигурацию сеанса по мере необходимости. Если вы хотите иметь высокий уровень безопасности во время сеанса Windows, но при входе в систему его использование будет снижено, вам нужно получить нюансы в порядке следования сценариев.
omJohn8372 1.09.2017 14:45:45
Для одного броска я нахожу ответ Анкура ниже, который определяет временное исключение для работающего экземпляра PowerShell наиболее полезным.
Florenz Kley 20.11.2018 21:27:50

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

.\scriptname.ps1
5
8.06.2017 10:20:10

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

1
11.10.2012 19:05:29
set-executionpolicy signedдает Cannot bind parameter 'ExecutionPolicy'и т. д.
JinSnow 16.02.2017 18:22:01

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

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

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

21
25.11.2018 20:22:23
this + superuser.com/questions/612409/… + ярлык ссылки = совершенство
user300375 2.04.2018 14:50:26

Вам нужно запустить 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.
77
6.09.2019 15:17:08
Какое значение по умолчанию ExecutionPolicy, которое Windows устанавливает новую установку?
Matthew Lock 17.05.2017 06:38:40
@MatthewLock Restricted- это политика по умолчанию. Читать дальше
Nadeem_MK 17.05.2017 10:01:23
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

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

Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.
5
8.06.2017 04:44:48

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

powershell -executionpolicy bypass -File .\MYSCRIPT.ps1

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

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

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

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

Это также приостанавливает окно в конце, чтобы я мог видеть вывод 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%
16
25.11.2018 20:24:40
Это то , что шоколадным использует для загрузки и установки шоколадного
icc97 23.01.2018 10:51:11
Я попытался выполнить команду Set-ExecutionPolicy bypass -File C: \ Users \ david \ Desktop \ test.ps1 и получил сообщение об ошибке. Для этой команды нет опции -File.
David Spector 9.07.2019 11:37:42
О, я вижу. Вы должны создать ярлык, содержащий команду powershell -executionpolicy bypass -File C: \ Users \ david \ Desktop \ test.ps1. Команда test.ps1 запускается даже тогда, когда была дана безопасная глобальная команда Set-ExecutionPolicy Restricted. Я надеюсь, что эта основная информация поможет кому-то.
David Spector 9.07.2019 11:42:52

В Windows 10: нажмите изменить свойство безопасности myfile.ps1 и измените «разрешить доступ», щелкнув правой кнопкой мыши / свойства myfile.ps1

0
20.09.2019 09:54:33