当我运行Update-Help时,它在powershell中失败.我没有通过代理.这是直接访问.我也在运行Powershell作为管理员.我不知道还有什么可以检查...欢迎任何建议.
这是我的版本.$ PSVersionTable
名称值
---- -----
PSVersion 5.1.14393.187
PSEdition Desktop
PSCompatibleVersions {
1.0,2.0,3.0,4.0 ...} BuildVersion 10.0.14393.187
CLRVersion
4.0.30319.42000 WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
$PSVersionTable
Name Value
---- -----
PSVersion 5.1.14393.187
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14393.187
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Run Code Online (Sandbox Code Playgroud)
我重申了Update-Help.我认为它更新了大部分内容.我只收到这些错误.
更新帮助:无法使用UI文化更新模块"Microsoft.PowerShell.Operation.Validation"的帮助{en-US}:模块清单中的HelpInfoUri键的值必须解析为容器或存储帮助文件的网站上的根URL.HelpInfoUri'https://www.msn.com/ ? ocid = NEFLS000' 无法解析为容器.在行:1 char:1 + Update-Help + ~~~~~~~~~~~ + CategoryInfo:InvalidOperation :( :) [Update-Help],Exception + FullyQualifiedErrorId:InvalidHelpInfoUri,Microsoft.PowerShell.Commands.UpdateHelpCommand
更新 - 帮助:无法更新具有UI文化的模块"AppvClient"的帮助{en-US}:找不到帮助内容.确保服务器可用,并在HelpInfo XML中正确定义了帮助内容位置.at line:1 char:1 + Update-Help + ~~~~~~~~~~~ + CategoryInfo:ResourceUnavailable:(:) [Update-Help],Exception + FullyQualifiedErrorId:HelpContentNotFound,Microsoft.PowerShell.Commands.UpdateHelpCommand
更新 - 帮助:无法更新具有UI文化的模块"SecureBoot"的帮助{en-US}:无法检索用于UI文化en-US的HelpInfo XML文件.确保模块清单中的HelpInfoUri属性有效或检查网络连接,然后再次尝试该命令.at line:1 char:1 + Update-Help + ~~~~~~~~~~~ + CategoryInfo:ResourceUnavailable:(:) [Update-Help],Exception + FullyQualifiedErrorId:UnableToRetrieveHelpInfoXml,Microsoft.PowerShell.Commands.UpdateHelpCommand
Scr*_*ate 25
多年后,这仍然是大多数用户的问题。我想我会在这里给出一个彻底的解释。
两个问题:
Update-Help
需要以管理员身份运行的PowerShell您的第一个错误是明显而直接的,此输出直接包含在您的第一个错误输出中:
Access is denied. The command could not update Help topics for the Windows PowerShell core modules, or for any modules in the $pshome\Modules directory. To update these Help
topics, start Windows PowerShell by using the "Run as Administrator" command, and try running Update-Help again.
Run Code Online (Sandbox Code Playgroud)
要抑制错误,但仍然下载您可以下载的所有内容,您可以运行以下命令(在通过Run as Administrator启动的 PowerShell 控制台中):
Update-Help -Verbose -Force -ErrorAction SilentlyContinue
Run Code Online (Sandbox Code Playgroud)
或者
Update-Help -Verbose -Force -ErrorAction SilentlyContinue -ErrorVariable UpdateErrors
Run Code Online (Sandbox Code Playgroud)
编辑(09/01/2021): PSReadLine
有具体的说明可用,如果这是您要修复的模块之一:
重命名C:\Program Files\WindowsPowerShell\Modules\PSReadline
来C:\Program Files\WindowsPowerShell\Modules\PSReadLine
(这是因为它是大小写敏感的,所以我们需要PSRead大号INE,不PSRead升INE)。
不过,可能还需要更多。以下是其中一篇博客文章的完整演练:
powershell.exe
进程。然后将PSReadline
模块文件夹名称重命名为PSReadLine
.powershell.exe
以管理员权限打开会话。Remove-Module PSReadLine
以删除自动加载的 PSReadLine 模块。Import-Module PSReadLine
(使用 PSReadLine 和大写L)。Update-Help -Module PSReadLine -Force
PSReadLine
更新修复引用的博客文章:
这是对
Update-Help -Verbose -Force -ErrorAction SilentlyContinue -ErrorVariable UpdateErrors
、它是如何工作的以及为什么需要在 Microsoft 为特定模块或为Update-Help
自身完成某些修复之前完成它的解释。
从帮助文档中Update-Help
,这就是为什么需要管理员权限的原因:
更新帮助需要管理权限。
您必须是计算机上管理员组的成员才能更新 PowerShell 核心模块的帮助文件。
要下载或更新 PowerShell 安装目录 ($PSHOME\Modules) 中模块的帮助文件,包括 PowerShell Core 模块,请使用“以管理员身份运行”选项启动 PowerShell。例如:Start-Process powershell.exe -Verb RunAs。
您还可以使用 Windows PowerShell 集成脚本环境 (ISE) 中“帮助”菜单中的“更新 Windows PowerShell 帮助”菜单项来更新帮助文件。
更新 Windows PowerShell 帮助项运行不带参数的 Update-Help cmdlet。要更新 $PSHOME 目录中模块的帮助,请使用以管理员身份运行选项启动 Windows PowerShell ISE。
至于使用的参数:
-Force
意味着一些事情,也直接从文档中引用Update-Help
:表示此 cmdlet 不遵循每天一次的限制,跳过版本检查,并下载超过 1 GB 限制的文件。
如果没有此参数,Update-Help 在每 24 小时内仅运行一次。每个模块的下载限制为 1 GB 的未压缩内容,并且仅当帮助文件比计算机上的现有文件更新时才会安装。
每天一次的限制可以保护托管帮助文件的服务器,并使您可以将 Update-Help 命令添加到 PowerShell 配置文件中,而不会产生重复连接或下载的资源成本。
-Verbose
只是意味着它将提供一堵黄色文本墙,描述哪些模块正在尝试更新,正在解析 URI 等。-ErrorVariable UpdateErrors
将错误保存到可通过$UpdateErrors
变量检索的变量中-ErrorAction SilentlyContinue
意味着简单地忽略任何错误,然后继续下一个可以更新的模块您可能想知道为什么抑制错误被认为是一种修复。这是因为:
$UpdateErrors
变量中可用,并且可以保存到文件或以其他方式处理。以下是最新 Windows 10 系统的示例(截至 2019 年第四季度 / 2020 年第一季度):
$PSVersionTable
Run Code Online (Sandbox Code Playgroud)
Name Value
---- -----
PSVersion 5.1.18362.145
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.18362.145
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Run Code Online (Sandbox Code Playgroud)
Get-WmiObject win32_operatingsystem | select Caption, Version
Run Code Online (Sandbox Code Playgroud)
Caption Version
------- -------
Microsoft Windows 10 Pro 10.0.18363
Run Code Online (Sandbox Code Playgroud)
对于 Windows 上 PowerShell 的新手和老手来说,Update-Help
在更新帮助文档的第一步中看到这些错误是一个主要的障碍和困惑点。大多数错误不是用户端的某种错误配置,但不幸的是,它一直是过去几年命令输出的默认和持续期望。
是的,解决方法命令有效。但是,如果人们通过抑制错误输出并继续前进来运行内置命令,那将是一种糟糕的客户体验(并且可能不是教人们的最佳实践,以防发生其他一些错误?)。抑制错误是所有人都剩下的。即使从 2016 年开始,它也是最高投票的答案:
请注意,标志着公认的答案(这应该不是针对与更新错误是公认的答案)HelpInfoUri
这里说:
我认为您需要为此联系 MS 支持。
问题在于您的机器及其安装,您需要获得支持来帮助您。我认为我们可以提出的唯一建议是重新安装 Windows。(!!)
疯狂的事情!如果出现此错误,请不要重新安装!我希望用户没有因为HelpInfoUri
错误而重新安装。
正如SamB 在这个 GitHub 问题中所说的那样,直接专注于解决这个持续存在的问题,HelpInfoURI
微软在他们的PowerShell 清单文件中设置的值有问题:
好了,该模块清单的WindowsUpdateProvider这台机器上并没有给超越“微软公司”的归属,但它指定
HelpInfoUri
的https://go.microsoft.com/fwlink/?linkid=390794,所以实际上没有必要为了弄清楚模块的来源,并以某种方式证明这需要向 WindowsUpdateProvider 发布补丁 - 只需要将该重定向指向适当的地方即可。
如果您在Update-Help
出现这些错误的系统上运行以下命令,您应该会看到输出:
Import-Module WindowsUpdateProvider
Get-Module WindowsUpdateProvider | select HelpInfoURI,Version
Run Code Online (Sandbox Code Playgroud)
HelpInfoUri Version
----------- -------
https://go.microsoft.com/fwlink/?linkid=390794 1.0.0.2
Run Code Online (Sandbox Code Playgroud)
例如,WindowsUpdateProvider的源模块清单位于此处:
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\WindowsUpdateProvider\WindowsUpdateProvider.psd1
Run Code Online (Sandbox Code Playgroud)
微软绝对可以将链接重定向到一个有效的HelpInfoUri
,这意味着客户端的零变化。
附带说明一下,-ErrorAction SilentlyContinue
经常使用的人会遗漏其他几个模块的帮助已损坏。截至今天,这些在标准 Windows 10 桌面上已损坏:
$TestModules = @("Microsoft.PowerShell.ODataUtils", "Microsoft.PowerShell.Operation.Validation", "UEV", "Whea", "WindowsDeveloperLicense", "defender", "configdefender", "appvclient")
Import-Module $TestModules
$BorkedHelp = Get-Module $TestModules | select Name, Version, HelpInfoUri
$BorkedHelp
Run Code Online (Sandbox Code Playgroud)
Name Version HelpInfoUri
---- ------- -----------
appvclient 1.0.0.0 https://go.microsoft.com/fwlink/?LinkId=403112
configdefender 1.0 https://go.microsoft.com/fwlink/?linkid=390762
defender 1.0 https://go.microsoft.com/fwlink/?linkid=390762
Microsoft.PowerShell.ODataUtils 1.0 https://go.microsoft.com/fwlink/?LinkId=509916
Microsoft.PowerShell.Operation.Validation 1.0.1 https://go.microsoft.com/fwlink/?LinkId=808399
UEV 2.1.639.0 https://go.microsoft.com/fwlink/?LinkId=826061
Whea 2.0.0.0 https://go.microsoft.com/fwlink/?linkid=390848
WindowsDeveloperLicense 1.0.0.0 https://go.microsoft.com/fwlink/?linkid=285578
Run Code Online (Sandbox Code Playgroud)
foreach ($uri in $BorkedHelp.helpinfouri) {Invoke-WebRequest $uri}
Run Code Online (Sandbox Code Playgroud)
欢迎来到红色404 - File or directory not found.
错误的海洋,所有端点都需要重定向。目前,某些端点已被破坏多年,而其他端点则可能更少。
这些应该可以由微软修复,使用他们在链接转发方面拥有的任何工具,除非他们更新模块清单以指向新工作的HelpInfoURI
端点,这对所有用户来说都是不太友好的选择。
如果 Microsoft 的问题是默认情况下没有可下载的文档,并且链接可能是自动生成的保留,以便稍后在有文档下载时使用,那么它们至少应该有一个最低限度的HelpInfoURI
端点而不是损坏的一。
遇到此问题并发现此解释有帮助的用户应在 GitHub 上访问此问题:MicrosoftDocs/windows-powershell-docs:WindowsUpdateProvider 的更新帮助失败
编辑(09/01/2021):上述问题已被关闭,微软不再使用 UserVoice 进行反馈(在问题关闭时被提及为合适的地方)。由于 Microsoft 支持文档中关于 UserVoice 的通知,看起来最好的选择是访问Microsoft 技术社区:PowerShell:
注意:我们将在 2021 日历年逐个产品地远离 UserVoice 反馈站点。我们将利用第一方解决方案来获取客户反馈。参考
如果任何有问题的 PowerShell 模块具有公共存储库,那么这些将是提出有关损坏Update-Help
功能问题的适当位置。如果它是 Microsoft 产品附带的 PowerShell 模块,则需要向产品本身提交某种报告来提出问题。
对于帮助文档端点损坏的任何已知 PowerShell 模块,您还可以注释掉HelpInfoURI
PowerShell 清单中的值。Update-Help
仅尝试下载HelpInfoURI
具有值的模块的更新。这可能有助于了解是否由于端点问题(例如HelpInfoURI
托管您自己的模块文档)而出现新错误。
Rav*_*ati 11
解决方法:
Update-Help -Verbose -Force -ErrorAction SilentlyContinue
Run Code Online (Sandbox Code Playgroud)
-verbose将输出正在执行的任何命令-force将强制完成脚本,即使错误发生在-ErrorAction之间,SilentlyContinue将执行类似上面的操作
注意,模块仍然不会更新,这些更新没有更新
归档时间: |
|
查看次数: |
4242 次 |
最近记录: |