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

时间:2009-04-08 00:58:57

标签: security powershell

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

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

但我得到安全警告,并且必须按'R'继续

  

安全警告仅运行脚本   你相信。来自的脚本   互联网可以很有用,这个脚本   可能会损害您的计算机。做   你想跑   \服务器\脚本\ my.ps1? [D]不要   运行[R]运行一次[S]暂停[?]   帮助(默认为“D”):d

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

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

13 个答案:

答案 0 :(得分:79)

"PowerShell Execution Policies in Standard Images" on Lee Holmes' Blog"PowerShell’s Security Guiding Principles" on the Windows Power Shell Blog 已触及此内容。

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

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

答案 1 :(得分:42)

为避免警告,您可以:

Set-ExecutionPolicy bypass

答案 2 :(得分:37)

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

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

  2. 点击文件属性

    中的取消屏蔽

    enter image description here

  3. 点击确定

答案 3 :(得分:11)

只需将1分配给SEE_MASK_NOZONECHECKS env变量

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

答案 4 :(得分:3)

试试这个,编辑文件:

notepad foo.ps1:Zone.Identifier

并设置'ZoneId = 0'

答案 5 :(得分:2)

您希望使用Set-ExecutionPolicy在您的计算机上设置执行策略:

Set-ExecutionPolicy Unrestricted

您可能需要调查各种执行政策,以了解哪一项适合您。有关详细信息,请查看“help about_signing”。

答案 6 :(得分:2)

这些都不适用于我的具体实例。从FQDN更改为NetBIOS名称的是什么。

而不是:
    \\server.domain.net\file.ps1
用途:
\\server\file.ps1

使用该名称绕过IE中的“自动检测Intranet网络”配置。

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

答案 7 :(得分:2)

我制作了这个powershell脚本来取消阻止我服务器上共享的所有文件

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

答案 8 :(得分:1)

您是否从互联网上下载了该脚本?

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

cmd> streams.exe .\my.ps1

现在尝试再次运行脚本。

答案 9 :(得分:0)

假设您需要从共享文件夹

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

P.S。 减少谷歌搜索)

答案 10 :(得分:0)

这非常简单,如果您有许多ps1文件,请打开PowerShell并编写以下命令。在这里,您必须使用自己的路径更改路径。

PS C:\Users> Get-ChildItem -Path "D:\downlod" -Recurse | Unblock-File

答案 11 :(得分:0)

尝试使用set-executionpolicy“ Policyname” -force开关,警告弹出窗口就不会出现。

答案 12 :(得分:0)

对于那些想要从已加载的PowerShell会话访问文件的用户,请使用Unblock-File将文件标记为安全(尽管您已经需要为Unrestricted设置宽松的执行策略,例如),或者仅针对当前PowerShell会话更改执行策略:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process