Игнорировать "Предупреждение о безопасности", выполняющее script из командной строки
Я пытаюсь выполнить script из общей папки, которой я доверяю:
PowerShell -file "\\server\scripts\my.ps1"
Но я получаю предупреждение о безопасности и должен нажать "R", чтобы продолжить
Предупреждение о безопасности. Запустите только скрипты, которые вы доверяете. Хотя скрипты из Интернет может быть полезен, этот scriptможет нанести вред вашему компьютеру. Делать вы хотите запустить \ Server\Scripts\my.ps1? [D] Не запустить [R] Запустить один раз [S] Приостановить [?] Справка (по умолчанию "D" ): d
Могу ли я игнорировать это предупреждение? Желаемый псевдокод я хочу:
PowerShell -IGNORE_SECURITY_WARNING -file "\\server\scripts\my.ps1"
Ответы
Ответ 1
Это коснулось "Политики исполнения PowerShell в стандартных изображениях" в блоге Lee Holmes и "Принципы обеспечения безопасности PowerShells" в блоге Power Power Windows.
Резюме
Некоторые машины рассматривают UNC-пути как большой плохой интернет, поэтому PowerShell рассматривает их как удаленные файлы. Вы можете отключить эту функцию на этих серверах (UncAsIntranet = 0,
) или добавить удаленные компьютеры на свои надежные хосты.
Если вы не хотите этого делать, PowerShell v2 поддерживает параметр -ExecutionPolicy
, который точно соответствует вашему псевдокоду. PowerShell -ExecutionPolicy Bypass -File (...)
.
Ответ 2
Чтобы избежать предупреждений, вы можете:
Set-ExecutionPolicy bypass
Ответ 3
Если вы используете эту ошибку из загруженной powershell script, вы можете разблокировать script следующим образом:
Ответ 4
Просто присвойте 1 переменной env SEE_MASK_NOZONECHECKS
$env:SEE_MASK_NOZONECHECKS = 1
Start-Process $msi_file_path /qn -Wait | out-null
Ответ 5
Попробуйте это, отредактируйте файл с помощью
notepad foo.ps1:Zone.Identifier
И установите 'ZoneId = 0'
Ответ 6
Вы хотите установить политику выполнения на своем компьютере с помощью Set-ExecutionPolicy:
Set-ExecutionPolicy Unrestricted
Вы можете изучить различные политики выполнения, чтобы узнать, какой из них подходит вам. Взгляните на "help about_signing
" для получения дополнительной информации.
Ответ 7
Ничего из этого не было в моем конкретном случае. Что изменилось на имя NetBIOS из полного доменного имени.
Вместо:
\\server.domain.net\file.ps1
Использование:
\\server\file.ps1
Использование имени обходит конфигурацию "автоматически определять сеть интрасети" в IE.
См. Вариант 1 в блоге:
http://setspn.blogspot.com/2011/05/running-powershell-scripts-from-unc.html
Ответ 8
Я сделал эту powershell script, чтобы разблокировать все файлы на общем ресурсе на моем сервере
Get-ChildItem "\\ServerName\e$\MyDirectory\" -Recurse -File | % {
Unblock-File -Path $_.FullName
}
Ответ 9
Вы загрузили script из Интернета?
Затем удалите поток NTFS из файла, используя sysinternal streams.exe в командной строке.
cmd> streams.exe .\my.ps1
Теперь попробуйте снова запустить script.
Ответ 10
Предположим, что вам нужно запустить ps script из общей папки
copy \\\server\script.ps1 c:\tmp.ps1 /y && PowerShell.exe -ExecutionPolicy Bypass -File c:\tmp.ps1 && del /f c:\tmp.ps1
P.S.
Сократить поиск в Интернете)
Ответ 11
Это очень просто сделать, откройте PowerShell и напишите следующую команду, если у вас есть количество файлов ps1. Здесь вы должны изменить путь с вашим путем.
PS C:\Users> Get-ChildItem -Path "D:\downlod" -Recurse | Unblock-File
Ответ 12
Попробуйте установить переключатель политики выполнения "Policyname" -force, и всплывающие окна с предупреждениями не должны появляться.