运行 PowerShell 脚本时出现错误:
File test_new.ps1 cannot be loaded. The file test_new.ps1 is not digitally signed.
我创建了一个 CA 和一个证书并使用描述的过程签署了这个文件 here .
这是我做
dir
的时候在 MY
目录:EF76B3D7D8D2406E1F2EE60CC40644B122267F18 CN=PowerShell 用户
我可以看到附加在
test_new.ps1
末尾的签名块文件。这是执行政策和范围:
范围执行策略
----- ---------------
MachinePolicy 已签名
用户策略未定义
进程绕过
当前用户全部签名
本地机器未定义
machinepolicy 应优先设置为
AllSigned
.一切似乎都很好,为什么我仍然收到数字签名的错误。
最佳答案
设置为 Allsigned 的 Powershell 执行策略仅运行由受信任发布者签名的脚本。您可以在下面找到 -ExecutionPolicy 参数的可能值:
受限 : 默认设置,不加载配置文件或运行脚本。
AllSigned :要求所有脚本和配置文件都由受信任的发布者签名,包括您在本地计算机上编写的脚本。
远程签名 :要求所有从 Internet 下载的脚本和配置文件都由受信任的远程发布者签名。
无限制 :加载所有配置文件并运行所有脚本。如果您运行从 Internet 下载的未签名脚本,则会在运行前提示您获得许可。
绕过 : 没有被阻止,也没有警告或提示。
未定义 :从当前作用域中移除当前分配的执行策略,将 session 返回到默认值。此参数不会删除在 Active Directory 组策略中设置的执行策略。
您可以通过以下命令设置 PowerShell 执行策略:
Set-ExecutionPolicy unrestricted
如果您想在域网络上运行脚本,那么您可能会使用组策略来确保用于对脚本进行签名的代码签名证书是您域中受信任的发布者。为此,有两个步骤:
在您的域网络中更新策略后,可信发布者证书应列在证书管理单元下的“可信发布者”中。
关于PowerShell 脚本数字签名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46727899/