修复:签名的 PowerShell cmdlet 运行速度比未签名的 cmdlet 慢

cmdlet是在Windows PowerShell环境中使用的轻量级命令。Windows PowerShell运行时在命令行提供的自动化脚本上下文中调用这些 cmdlet。Windows PowerShell运行时还通过(Windows PowerShell)Windows PowerShell API(Windows PowerShell APIs)以编程方式调用它们。在今天的博文中,我们将找出原因,然后针对Windows上签名的(Windows)PowerShell cmdlet(PowerShell cmdlets)比未签名的 cmdlet 运行速度慢的问题提供解决方法。

Cmdlet 执行操作,通常将Microsoft .NET Framework对象返回到管道中的下一个命令。要编写 cmdlet,您必须实现派生自两个专用 cmdlet 基类之一的 cmdlet 类。派生类必须:

  • 声明(Declare)一个将派生类标识为 cmdlet 的属性。
  • 定义(Define)用将公共属性标识为 cmdlet 参数的属性修饰的公共属性。
  • 覆盖一种或多种输入处理方法来处理记录。

签名的PowerShell cmdlet 运行速度比未签名的 cmdlet 慢

您会注意到签名的Windows PowerShell cmdlet 的运行速度比未签名的 cmdlet 慢。

出现此问题的原因是计算机无法连接到以下地址以进行证书信任列表(Certificate Trust List)( CTL ) 验证:

http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab

http://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab

当存在网络问题时会发生这种情况。例如,代理设置不正确。

要解决此问题,请执行以下操作:

签名的 PowerShell cmdlet 运行速度比未签名的 cmdlet 慢

  • Windows键 + R。在“运行”(Run)对话框中,键入gpedit.msc并按 Enter 以打开“本地组策略编辑器”(open Local Group Policy Editor)
  • 导航到以下路径:

Computer Configuration > Windows Settings > Security Settings > Public Key Policies

  • 在右侧的详细信息窗格中,双击Certificate Path Validation Settings
  • 选择网络检索(Network Retrieval)选项卡。
  • 选中定义这些策略设置(Define these policy settings)复选框。
  • 取消选中Microsoft 根证书计划(推荐)中的自动更新证书(Automatically update certificates in the Microsoft Root Certificate Program (recommended) )复选框。
  • 单击应用(Apply)>确定。(OK.)

您现在可以退出本地组策略编辑器(Local Group Policy Editor)

That’s it!



About the author

我是一名软件工程师,拥有 Xbox Explorer、Microsoft Excel 和 Windows 8.1 Explorer 方面的经验。业余时间,我喜欢玩电子游戏和看电视。我拥有犹他大学的学位,目前在一家国际公司担任软件工程师。



Related posts