Игнорировать запущенный скрипт «Предупреждение системы безопасности» из командной строки - PullRequest
60 голосов
/ 08 апреля 2009

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

PowerShell -file "\\server\scripts\my.ps1"

Но я получаю предупреждение системы безопасности и должен нажать «R», чтобы продолжить.

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

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

PowerShell -IGNORE_SECURITY_WARNING -file "\\server\scripts\my.ps1"

Ответы [ 12 ]

79 голосов
/ 08 апреля 2009

Об этом говорится в «Политика выполнения PowerShell в стандартных изображениях» в блоге Ли Холмса и «Руководящие принципы безопасности PowerShell» в блоге Windows Power Shell .

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

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

42 голосов
/ 13 апреля 2012

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

Set-ExecutionPolicy bypass
37 голосов
/ 19 сентября 2013

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

  1. Щелкните правой кнопкой мыши по рассматриваемому файлу .ps1 и выберите Свойства

  2. Нажмите Разблокировать в свойствах файла

    enter image description here

  3. Нажмите OK

12 голосов
/ 09 февраля 2016

Просто присвойте 1 переменной SEE_MASK_NOZONECHECKS env

$env:SEE_MASK_NOZONECHECKS = 1
Start-Process $msi_file_path /qn -Wait | out-null
3 голосов
/ 08 апреля 2009

Попробуйте, отредактируйте файл с помощью:

notepad foo.ps1:Zone.Identifier

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

2 голосов
/ 07 октября 2016

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

Get-ChildItem "\\ServerName\e$\MyDirectory\" -Recurse -File | % {
       Unblock-File -Path $_.FullName
}
2 голосов
/ 13 мая 2016

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

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

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

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

2 голосов
/ 08 апреля 2009

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

Set-ExecutionPolicy Unrestricted

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

1 голос
/ 08 апреля 2009

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

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

cmd> streams.exe .\my.ps1

Теперь попробуйте снова запустить скрипт.

0 голосов
/ 04 апреля 2019

Попробуйте установить-executepolicy "Policyname" -force, и всплывающее окно с предупреждениями не должно появиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...