PowerShell 脚本数字签名错误

标签 powershell powershell-2.0 powershell-3.0 code-signing

运行 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/

    相关文章:

    powershell - 在PowerShell命令上内联时如何运行

    powershell - 如何运行没有 ps1 扩展名的 powershell 脚本

    powershell - 如何收集标准输出,$?和 $LASTEXITCODE 来自包含任何代码的脚本 block

    powershell - 使用Powershell递归设置文件夹的权限?

    azure - 在 Powershell 中安装 Az 模块时出错 - 程序包 'Az.Accounts' 无法安装

    arrays - 比较2个数组并删除元素

    amazon-web-services - 我怎样才能正确使用New-EC2Tag?

    powershell - 从配置文件[PowerShell]中读取时分配适当的变量类型

    sql-server-2008 - 是否可以在具有Powershell的SQL Server中创建数据库?

    arrays - 如何比较两个数组,删除相似的项目,而不迭代整个数组?