分类

Win10专业版

Win10纯净版

当前位置:Win10之家 > 资讯

微软解释带签名的 PowerShell Cmdlet 运行缓慢的原因

作者:    来源:    日期:2019-09-27

  经常使用Powershell的开发者或企业IT管理员们或许已经发现有些命令执行起来速度很快但也有些执行速度很慢。单纯凭经验判断的话很难想到为什么有些命令执行速度很慢,因此也经常有开发者们会在微软社区发帖进行询问。为此微软已经撰写新文档对这个问题解释,简单来说如果开发者的网络连接较差则执行命令就会遇到缓慢的问题。

微软解释带签名的 PowerShell Cmdlet 运行缓慢的原因

  每次都需要校验签名:

  微软表示基于安全考虑所有携带签名的Powershell cmdlet 命令在执行时都必须在线连接微软服务器验证证书等。虽然需要请求服务器下载的可信证书列表仅 50KB 左右 , 但用户如果网络存在异常情况那么就无法正常下载文件。当然基于实际情况考虑当无法下载可信证书列表时会降级为本地验证,也就是放弃从服务器加载最新的验证列表。这个过程可能会持续几十秒或者几分钟,这也是为什么开发者执行带签名的命令时有可能遇到迟迟无法执行问题。

  // 需要在线下载的证书库链接如下

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

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

  // 通过以下命令查看待执行命令是否签名

  Get-AuthenticodeSignature -FilePath "path-to-file"

  通过组策略禁止联网校验:

  如果开发者所在环境的网络连接非常差甚至没有网络的话,那就可以考虑通过组策略禁止每次运行进行联网验证。配置路径如下:组策略计算机配置、策略、 Windows 设置、安全设置、公钥策略、双击打开证书路径验证设置。然后选择网络检索选项将其修改为自定义策略设置并同时将微软根证书自动更新策略取消勾选再保存组策略即可。这样设置后微软根证书信任库将无法执行自动更新,从而达到Powershell cmdlet 命令执行时不进行联网校验等。

  重要提示:此选项无法更新证书库意味着部分被吊销的签名无法及时更新,除非必须否则请勿关闭证书自动更新。

推荐下载