为什么即使执行策略为RemoteSigned,也需要“ Unblock-File”?

时间:2018-09-26 15:59:32

标签: powershell batch-file autosys

我有一个调用powershell脚本并运行它的批处理文件。

Powershell.exe -ExecutionPolicy RemoteSigned -File %1

%1参数是file_name.ps1

当我从本地驱动器运行它时,脚本运行良好。

但是,我将脚本移到了共享驱动器上运行,当我尝试从共享驱动器上运行该脚本时,它会在继续之前给出这种提示:

Unblock_file prompt

此问题是autosys必须绕过此提示,否则会给出错误。

但是,如果我在本地驱动器上运行脚本时却没有提示,为什么共享驱动器中甚至会有这个问题?我应该怎么解决呢?

我尝试在Powershell中传递Unblock-File -Path some_path,但显然无法识别该cmdlet。

1 个答案:

答案 0 :(得分:0)

好吧,因此在无法加载文件的区域标识之后,我尝试按如下所示绕过策略:

Powershell.exe -ExecutionPolicy ByPass -File %1

这使它起作用了。...代替了RemoteSigned / Unrestricted ...

基于此处的MSDN文章:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-6

  

RemoteSigned :脚本可以运行。

     

需要来自受信任的发布者的数字签名,包括脚本和   从Internet下载的配置文件(包括   电子邮件和即时消息传递程序。

     

在您编写的脚本上不需要数字签名   在本地计算机上(而不是从Internet下载)。

     

运行从Internet下载且未签名的脚本(如果有)   脚本已被解除阻止,例如使用Unblock-File cmdlet。

     

不受限制::可以运行未签名的脚本。 (这可能会导致恶意运行   脚本。)

     

在运行脚本和配置文件之前警告用户   从Internet下载。

但是我的脚本是从一个驱动器本地复制到另一个驱动器,而不是从Internet下载的...并且在文件属性中,没有“取消阻止”按钮,并且无论如何,Unblock cmdlet都无法为我工作。

因此,为了避免警告,唯一起作用的是ByPass

  

绕过:没有任何障碍,也没有警告或提示。