PowerShell指定版本执行Update-Help仍更新所有模块版本问题咨询
问题1:指定版本后仍更新所有模块版本的原因
这是PowerShell Update-Help 命令的已知设计缺陷,在Windows PowerShell 5.1以及PowerShell 7.2及更早版本中,-FullyQualifiedModule 参数传入的 ModuleVersion 过滤规则不会实际生效,命令会默认扫描所有 PSModulePath 路径下匹配指定名称的所有已安装版本,逐一遍历尝试更新帮助文档。只要有任意版本的帮助更新失败,命令就会返回全局错误,你遇到的报错正是因为本地1.4.0版本的帮助资源未上传导致请求失败,而非你指定的1.2.0版本更新出错。
问题2:错误信息缺少详情的原因
Update-Help 的默认错误输出做了全局聚合处理,仅会返回模块维度的更新失败提示,不会拆分展示每个版本的请求结果、请求URI等详细诊断信息。如果需要查看每个版本的更新明细,需要额外添加 -Verbose 参数运行命令,才能看到完整的执行日志。
可行的解决方法
- 临时过滤不需要更新的版本:如果只需要更新指定版本的帮助,可以暂时将其他不需要更新的模块版本目录移出
PSModulePath对应的扫描路径,更新完成后再移回即可 - 处理开发版本:针对开发中的未发布版本(比如你本地的1.4.0版本),可以暂时注释掉模块psd1清单中的
HelpInfoUri字段,避免命令触发无效的帮助请求 - 升级PowerShell版本:PowerShell 7.3及以上版本已经修复了
-FullyQualifiedModule的版本过滤无效的问题,指定版本后只会更新对应版本的帮助文档,不会遍历所有已安装版本
内容的提问来源于stack exchange,提问作者joeking
相关产品推荐
相关产品推荐

