PowerShell在V3的版本中加入了一个新的特性:可更新的帮助。
PowerShell通过互联网进行下载,以更新、修正和扩展帮助系统。
为了做到这种可更新的帮助,微软必然就不能够将任何帮助信息放到任何安装包之中,你需要查看某个命令的帮助的时候,其实都是得到的一个自动生成的简易版本的帮助信息。
例如,这样的:
PS C:\Windows\system32> help gsv 名称 Get-Service 语法 Get-Service [[-Name] ] [] Get-Service [] Get-Service [] 别名 gsv 备注 Get-Help 在此计算机上找不到该 cmdlet 的帮助文件。它仅显示部分帮助。 -- 若要下载并安装包含此 cmdlet 的模块的帮助文件,请使用 Update-Help。 -- 若要联机查看此 cmdlet 的帮助主题,请键入: "Get-Help Get-Service -Online" 或 转到 http://go.microsoft.com/fwlink/?LinkID=113332。 PS C:\Windows\system32>
因此,更新PowerShell的帮助文档,应该是开始使用PowerShell的首要任务。
更新帮助系统的指令:update-help
注意:
更新的时候,需要使用管理员权限操作。
因为更新后的帮助信息,都会存储在系统的System32的目录下,所以,必须使用管理员权限,才能对其有写权限。
具体如下:
如果,以非管理员操作,则你会得到如下报错:
PS C:\Users\adamhuan> update-help update-help : 无法更新以下模块的帮助: “AppBackgroundTask, AppLocker, AppvClient, Appx, AssignedAccess, BitLocker, BranchCache, CimCmdlets, ConfigCI, Defende r, DirectAccessClientComponents, Dism, DnsClient, EventTracingManagement, International, iSCSI, ISE, Kds, Microsoft.Pow erShell.Archive, Microsoft.PowerShell.Core, Microsoft.PowerShell.Diagnostics, Microsoft.PowerShell.Host, Microsoft.Powe rShell.LocalAccounts, Microsoft.PowerShell.Management, Microsoft.PowerShell.ODataUtils, Microsoft.PowerShell.Security, Microsoft.PowerShell.Utility, Microsoft.WSMan.Management, MMAgent, MsDtc, NetAdapter, NetConnection, NetEventPacketCapt ure, NetLbfo, NetNat, NetQos, NetSecurity, NetSwitchTeam, NetTCPIP, NetworkConnectivityStatus, NetworkSwitchManager, Ne tworkTransition, PackageManagement, PcsvDevice, PKI, PnpDevice, PowerShellGet, PrintManagement, PSDesiredStateConfigura tion, PSReadline, PSScheduledJob, PSWorkflow, PSWorkflowUtility, ScheduledTasks, SecureBoot, SmbShare, SmbWitness, Star tLayout, Storage, TLS, TroubleshootingPack, TrustedPlatformModule, UEV, VpnClient, Wdac, WindowsDeveloperLicense, Windo wsErrorReporting, WindowsSearch, WindowsUpdate” 访问被拒绝。命令无法更新 Windows PowerShell 核心模块或 $pshome\Modules 目录中任意模块的帮助主题。若要更新这些帮助主题, 请使用“以管理员身份运行”命令启动 Windows PowerShell,然后重试运行 Update-Help。 所在位置 行:1 字符: 1 + update-help + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Update-Help],Exception + FullyQualifiedErrorId : UpdatableHelpSystemRequiresElevation,Microsoft.PowerShell.Commands.UpdateHelpCommand update-help : 无法更新带有 UI 区域性 {en-US} 的模块“Microsoft.PowerShell.Operation.Validation”帮助: 对路径“C:\Progra m Files\WindowsPowerShell\Modules\Microsoft.PowerShell.Operation.Validation\1.0.1\en-US”的访问被拒绝。 所在位置 行:1 字符: 1 + update-help + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Update-Help],Exception + FullyQualifiedErrorId : UnknownErrorId,Microsoft.PowerShell.Commands.UpdateHelpCommand update-help : 无法更新带有 UI 区域性 {zh-CN} 的模块“BitsTransfer”帮助: 模块清单中 HelpInfoUri 键的值必须解析为某个容 器或存储帮助文件的网站上的根 URL。HelpInfoUri“https://technet.microsoft.com/en-us/library/dd819413.aspx”未解析为某个 容器。 所在位置 行:1 字符: 1 + update-help + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Update-Help],Exception + FullyQualifiedErrorId : InvalidHelpInfoUri,Microsoft.PowerShell.Commands.UpdateHelpCommand PS C:\Users\adamhuan>
对于不能联网的机器,可以使用离线升级的方式,更新PowerShell的帮助系统。
具体如下:
在可以联网的机器上下载帮助信息到本地:
save-help -DestinationPath “存储路径”
你可能会遇到这样的问题:
无法保存带有 UI 区域性 {zh-CN} 的模块“BitsTransfer”
PS D:\> Save-Help -DestinationPath "D:\temp_me\powershell_help_data\" Save-Help : 无法保存带有 UI 区域性 {zh-CN} 的模块“BitsTransfer”帮助: 模块清单中 HelpInfoUri 键的值必须解析为某个容器 或存储帮助文件的网站上的根 URL。HelpInfoUri“https://technet.microsoft.com/en-us/library/dd819413.aspx”未解析为某个容 器。 所在位置 行:1 字符: 1 + Save-Help -DestinationPath "D:\temp_me\powershell_help_data\" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Save-Help],Exception + FullyQualifiedErrorId : InvalidHelpInfoUri,Microsoft.PowerShell.Commands.SaveHelpCommand PS D:\>
注意:上面的问题的原因是当前操作系统的语言集为中文,如果语言为英文,则没有上面的问题。
然后,在离线的主机中应用:
Update-Help -SourcePath “存放离线数据的目录”
PS C:\Users\administrator> Update-Help -SourcePath "C:\temp_me\ps_help_data" PS C:\Users\administrator>
这样,就可以了。
——————————————
Done。