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

ale*_*2k8 64 security powershell

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

PowerShell -file "\\server\scripts\my.ps1"
Run Code Online (Sandbox Code Playgroud)

但是我收到安全警告,并且必须按'R'才能继续

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

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

PowerShell -IGNORE_SECURITY_WARNING -file "\\server\scripts\my.ps1"
Run Code Online (Sandbox Code Playgroud)

小智 80

这在触及对李福尔摩斯博客"的标准形象PowerShell执行政策",并在'PowerShell的安全指导原则’ Windows电源外壳博客 .

总结 有些机器将UNC路径视为重要的坏网络,因此PowerShell将它们视为远程文件.您可以在这些服务器上禁用此功能(UncAsIntranet = 0,),也可以将远程计算机添加到可信主机.

如果您不想这样做,PowerShell v2支持的-ExecutionPolicy参数完全符合您的伪代码所需.PowerShell -ExecutionPolicy Bypass -File (...).

  • 谢谢!-ExecutionPolicy Bypass正是我想要的. (4认同)
  • 只是要澄清-“添加到受信任的主机”是指系统的Internet选项,可通过控制面板或Internet Explorer访问。该名称似乎是字符串匹配。我的共享名是“ \\ foo-files”。将名称“ foo-files.example.com”添加到受信任的主机不起作用,我只需要添加名称“ foo-files”即可。 (2认同)

小智 43

为避免警告,您可以:

Set-ExecutionPolicy bypass
Run Code Online (Sandbox Code Playgroud)

  • 警告:这会在整个计算机上设置ExecutionPolicy,这是一个很大的安全风险.上面的@LeeHolmes解决方案仅为该会话设置ExecutionPolicy,风险较低. (4认同)

mop*_*led 38

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

  1. 右键单击相关.ps1文件,然后选择" 属性"

  2. 单击文件属性中的" 取消阻止 "

    在此输入图像描述

  3. 单击确定

  • 谢谢!!这对我有用,即使使用 Set-ExecutionPolicy Unrestricted,每次启动时我都会收到提示 (2认同)
  • 至少在我的机器上,“Unblock-File”似乎对原始问题中所示的 UNC 路径没有帮助,“Unblock”按钮也不会出现在文件的属性对话框中。我认为这是因为您的文件在本地托管`C:\...`,这使得这个答案对原始问题无效(尽管对 >=28 人有帮助) (2认同)

Jam*_*and 13

只需为SEE_MASK_NOZONECHECKS env变量分配1即可

$env:SEE_MASK_NOZONECHECKS = 1
Start-Process $msi_file_path /qn -Wait | out-null
Run Code Online (Sandbox Code Playgroud)

  • “开始进程”不支持“ -ExecutionPolicy绕过”,因此即使禁用了UAC,它在UNC路径上也会失败。但是有了这个技巧,它就可以了。用我的双手进行投票。 (2认同)