从命令行忽略“安全警告”运行脚本

我试图从我信任的共享文件夹执行脚本:

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

但我得到安全警告,必须按“R”继续

安全警告仅运行您信任的脚本。 虽然来自Internet的脚本可能有用,但此脚本可能会损害您的计算机。 你想运行\ server \ scripts \ my.ps1吗? [D]不运行[R]运行一次[S]暂停[?]帮助(默认为“D”):d

我可以忽略这个警告吗? 我想要的伪代码是:

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

这在Lee Holmes博客的 “ 标准映像中的PowerShell执行策略”和Windows Power Shell博客上的“PowerShell安全指导原则”中有所涉及。

总结一些机器将UNCpath看作是一个糟糕的互联网,所以PowerShell将它们视为远程文件。 您可以在这些服务器上禁用此function( UncAsIntranet = 0, ),也可以将远程计算机添加到您的可信主机。

如果你不这么做,PowerShell v2支持一个-ExecutionPolicy参数,它完全符合你的伪代码的要求。 PowerShell -ExecutionPolicy Bypass -File (...)

为了避免警告,您可以:

 Set-ExecutionPolicy bypass 

如果您从下载的PowerShell脚本中遇到此错误,可以通过以下方式解除对脚本的阻止:

  1. 用鼠标右键单击有问题的.ps1文件,然后select“ 属性”

  2. 点击文件属性中的解除阻止

    在这里输入图像说明

  3. 点击OK

只需将SEE_MASK_NOZONECHECKS envvariables赋值为1即可

 $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 ”了解更多信息。

你有没有从网上下载脚本?

然后在命令行中使用sysinternal的streams.exe从文件中删除NTFSstream。

 cmd> streams.exe .\my.ps1 

现在尝试再次运行脚本。

这在我的具体情况下都不起作用。 什么是从FQDN更改为NetBIOS名称。

代替:
\\server.domain.net\file.ps1
使用:
\\server\file.ps1

使用名称绕过IE中的“自动检测Intranetnetworking”configuration。

请参阅此处的博客中的选项1: http : //setspn.blogspot.com/2011/05/running-powershell-scripts-from-unc.html

假定您需要从共享文件夹启动ps脚本

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

PS减less谷歌search)

我做了这个PowerShell脚本来解除阻塞在我的服务器上共享的所有文件

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