Игнорировать "предупреждение безопасности" запуск скрипта из командной строки


Я пытаюсь выполнить скрипт из общей папки, которым я доверяю:

PowerShell -file "serverscriptsmy.ps1"

но я получаю предупреждение безопасности и должен нажать 'R', чтобы продолжить

предупреждение безопасности запускайте только скрипты, которые ты доверяешь. В то время как скрипты из Интернет может быть полезен этот скрипт может нанести вред вашему компьютеру. Делать вы хотите бежать serverscriptsmy. ps1? [D] Нет запустить [R] запустить один раз [S] приостановить [?] Справка (по умолчанию "D"): d

могу ли я игнорировать это предупреждение? Желаемый псевдо-код, который я хочу:

PowerShell -IGNORE_SECURITY_WARNING -file "serverscriptsmy.ps1"
10 55

10 ответов:

это коснулось в "политики выполнения PowerShell в стандартных изображениях" в блоге ли Холмса и "руководящие принципы безопасности PowerShell" на Блог Windows Power Shell .

резюме Некоторые машины рассматривают UNC-пути как большой плохой интернет, поэтому PowerShell рассматривает их как удаленные файлы. Вы можете либо отключить эту функцию на этих серверах (UncAsIntranet = 0,) или добавьте удаленные машины к вашим доверенным принимать гостей.

Если вы не хотите делать ни того, ни другого, PowerShell v2 поддерживает -ExecutionPolicy параметр, который делает именно то, что ваш псевдокод хочет. PowerShell -ExecutionPolicy Bypass -File (...).

чтобы избежать предупреждений, Вы можете:

Set-ExecutionPolicy bypass

Если вы столкнулись с этой ошибкой из загруженного сценария powershell, вы можете разблокировать сценарий следующим образом:

  1. щелкните правой кнопкой мыши на и выберите свойства

  2. клик разблокировать в свойствах файла

    enter image description here

  3. клик ОК

просто назначьте 1 переменной see_mask_nozonechecks env

$env:SEE_MASK_NOZONECHECKS = 1
Start-Process $msi_file_path /qn -Wait | out-null

попробуйте отредактировать файл с:

notepad foo.ps1:Zone.Identifier

и установите 'ZoneId=0'

вы хотите установить политику выполнения на вашем компьютере с помощью Set-ExecutionPolicy:

Set-ExecutionPolicy Unrestricted

вы можете изучить различные политики выполнения, чтобы увидеть, какой из них подходит именно вам. Взгляните на "help about_signing" для получения дополнительной информации.

вы скачали скрипт из интернета?

затем удалите поток NTFS из файла с помощью sysinternal's потоки.exe в командной строке.

cmd> streams.exe .\my.ps1

теперь попробуйте запустить скрипт еще раз.

ничего из этого не сработало в моем конкретном случае. То, что произошло, изменилось на имя NetBIOS из полного доменного имени.

вместо:
\server.domain.net\file.ps1
использование:
\server\file.ps1

использование имени обходит конфигурацию "автоматическое обнаружение интрасети" в IE.

смотрите Вариант 1 в блоге здесь: http://setspn.blogspot.com/2011/05/running-powershell-scripts-from-unc.html

Я сделал этот скрипт powershell, чтобы разблокировать все файлы на общем ресурсе на моем сервере

Get-ChildItem "\ServerName\e$\MyDirectory\" -Recurse -File | % {
       Unblock-File -Path $_.FullName
}

предположим, что вам нужно запустить скрипт PS из общей папки

copy \\server\script.ps1 c:\tmp.ps1 /y && PowerShell.exe -ExecutionPolicy Bypass -File c:\tmp.ps1 && del /f c:\tmp.ps1

С. П. Уменьшить Гугл)