在我的电脑(Win10 Enterprise x64,1709)上运行Update-Help
返回两个错误:
update-help:无法更新 UI 文化为 {en-US} 的模块“AutoSequencer、HostNetworkingService、WindowsUpdateProvider”的帮助:无法检索 UI 文化为 en-US 的 HelpInfo XML 文件。请确保模块清单中的 HelpInfoUri 属性有效,或者检查您的网络连接,然后重试该命令。
在第 1 行,字符:1 + update-help + ~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (:) [Update-Help],异常 + FullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShell.Commands.UpdateHelpCommand
update-help:无法更新 UI 文化为 {en-US} 的模块“PrintManagement”的帮助:无法连接到帮助内容。存储帮助内容的服务器可能不可用。请验证服务器是否可用,或等到服务器恢复在线,然后重试该命令。
在第 1 行,字符:1 + update-help + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Update-Help],异常 + FullyQualifiedErrorId : UnableToConnect,Microsoft.PowerShell.Commands.UpdateHelpCommand
这是一个问题,因为我第一次编写 Windows 更新脚本,并且有Windows更新提供程序很重要。即使我知道如何找到并修复“帮助信息Uri“属性,我不知道该把它设置为什么——谷歌搜索“WindowsUpdateProvider 帮助“大多数人用各种语言询问这个问题,但我看不到任何解决方案。这同样意味着我无法通过使用在线帮助来解决问题。(Get-Help WindowsUpdateProvider -online 返回类似的错误。)
我知道“更新程序“模块,但由于我们的流程,使用附带的模块Windows 10会更好。
答案1
这并不罕见。自从 PowerShell/Monad 首次发布以来,这种情况已经发生过很多次了。
因此,不要为此感到压力,因为您通常无法修复它(很多时候只有作者可以),如果有问题的话,请使用有问题的模块的在线网络帮助版本。
并非所有模块都有可更新的帮助,或者相关清单、帮助链接文件存在问题。
因此,正如 PimpJuiceIT 所指出的,只需使用该命令即可忽略错误。
答案2
我偶然发现了无法更新模块的帮助~尝试此操作后,请参阅 TechNet 帖子并得到与您完全相同的结果。
在我使用下面的语法运行之后,我读了那篇文章,然后提升了电源外壳提示,这给了我问题是什么以及如何解决所需的详细信息。
两部分解决方案
- 跑步电源外壳提升为管理员
运行此电源外壳命令语法:
Update-Help -Force -Ea 0 -Ev what $what.Exception
错误(使用-ErrorAction
[ -Ea
] 和-ErrorVariable
[ -Ev
])
无法更新模块“
<List of Modules>
~”的帮助。访问被拒绝。该命令无法更新 Windows PowerShell 核心模块或 $pshome\Modules 目录中任何模块的帮助主题。要更新这些帮助主题,使用“以管理员身份运行”启动 Windows PowerShell命令,然后尝试再次运行 Update-Help。无法更新模块的帮助 ~
更多资源
- 更新帮助
-
ErrorAction
这
-ErrorAction
通用参数允许您指定命令失败时要采取的操作。可用选项包括:停止,继续,默默继续,忽略, 或者查询。如果您正在开发 Windows PowerShell 工作流,您还可以使用暂停值。但高级功能无法暂停。当您指定错误动作参数在调用命令期间,指定的行为将覆盖
$ErrorActionPreference
Windows PowerShell 中的变量。此变量是少数几个称为“首选项变量”的变量的一部分。默认情况下,Windows PowerShell 使用错误操作首选项继续,这意味着错误将被写入主机,但脚本将继续执行。
ErrorVariable
通常情况下,如果您运行 Windows PowerShell 命令并发生错误,错误记录将附加到名为
$error
. 当您使用-ErrorVariable
参数在命令调用中,错误会被分配给您指定的变量名。需要注意的是,即使您使用-ErrorVariable
参数$error
变量仍在更新。
答案3
引用德索洛多,问题 #139来自PowerShell 文档在 GitHub 上:
不,目前还没有针对缺失帮助的修复。但是,此模块中的大多数 cmdlet 都没有任何实际选项,只是返回 true/false 或日期时间。
我个人喜欢下面的解决方法,它继续运行,不会在出现错误时停止,而是在最后给出错误。这是 Alo Press 在这篇文章中提出的Technet 讨论。
Update-Help -Force -Ea 0 -Ev what
$what.Exception
答案4
主要问题(以及其他问题)是 MS 拒绝修复模块目录的大小写依赖性。它们基本上附带了错误的目录名称大小写,您需要手动重命名它们。一些“更新帮助”问题在powershell 仓库,但都被机器人关闭了。有些人提出了一些黑客解决方案。
例如,要修复:Dism, Kds, NetQos, PcsvDevice, Pester, PKI, Whea
,您可以执行以下操作:
Rename-Item -Path "C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PKI" -NewName "pki" -Force
Rename-Item -Path "C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Kds" -NewName "KDS" -Force
Rename-Item -Path "C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Dism" -NewName "DISM" -Force
Rename-Item -Path "C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PcsvDevice" -NewName "PCSVDevice" -Force
Rename-Item -Path "C:\Windows\system32\WindowsPowerShell\v1.0\Modules\NetQos" -NewName "NetQoS" -Force
Rename-Item -Path "C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Whea" -NewName "WHEA" -Force
# Install a new version of Pester in parallel
Install-Module -Name Pester -Force -SkipPublisherCheck
要查看所有新错误,请使用:
$modules = Get-Module -ListAvailable
foreach ($module in $modules) {
Write-Output $module
Update-Help -Module $module -EA 0 -EV what
Write-Host -f DarkYellow $what.Exception
}