IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    PowerShell:更新帮助系统

    Adamhuan发表于 2017-01-13 08:04:43
    love 0

    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。



沪ICP备19023445号-2号
友情链接