update-help 无法更新两个模块

update-help 无法更新两个模块

在我的电脑(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 帖子并得到与您完全相同的结果。

在我使用下面的语法运行之后,我读了那篇文章,然后提升了电源外壳提示,这给了我问题是什么以及如何解决所需的详细信息。

两部分解决方案

  1. 跑步电源外壳提升为管理员
  2. 运行此电源外壳命令语法:

    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 工作流,您还可以使用暂停值。但高级功能无法暂停。

        当您指定错误动作参数在调用命令期间,指定的行为将覆盖$ErrorActionPreferenceWindows 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
}

相关内容