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

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

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

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

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

91 голос | спросил DevelopingChris 14 AM00000070000001731 2008, 07:39:17

7 ответов


0

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

Попробуйте ввести это:

set-executionpolicy remotesigned

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

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

ответил Matt Hamilton 14 AM00000070000003331 2008, 07:41:33
0

Вам нужно запустить 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 42013vEurope/Moscow11bEurope/MoscowThu, 14 Nov 2013 14:15:31 +0400 2013, 14:15:31
0

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

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

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

ответил Naveen 22 AMpMon, 22 Apr 2013 11:16:58 +040016Monday 2013, 11:16:58
0

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

powershell -executionpolicy bypass -File .\MYSCRIPT.ps1

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

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

[Изменить 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%
ответил Michael Potter 30 12015vEurope/Moscow11bEurope/MoscowMon, 30 Nov 2015 23:13:10 +0300 2015, 23:13:10
0
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 FebruaryEurope/MoscowbFri, 21 Feb 2014 04:23:53 +0400000000amFri, 21 Feb 2014 04:23:53 +040014 2014, 04:23:53
0

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

.\scriptname.ps1
ответил Leon Bambrick 14 AM00000070000004731 2008, 07:47:47
0

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

ответил ExchangeAdmin 19 J000000Thursday12 2012, 00:23:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132