Save-Help

下载最新的帮助文件,并将其保存到文件系统目录。

语法

Save-Help
    [-DestinationPath] <String[]>
    [[-Module] <PSModuleInfo[]>]
    [-FullyQualifiedModule <ModuleSpecification[]>]
    [[-UICulture] <CultureInfo[]>]
    [-Credential <PSCredential>]
    [-UseDefaultCredentials]
    [-Force]
    [-Scope <UpdateHelpScope>]
    [<CommonParameters>]
Save-Help
    -LiteralPath <String[]>
    [[-Module] <PSModuleInfo[]>]
    [-FullyQualifiedModule <ModuleSpecification[]>]
    [[-UICulture] <CultureInfo[]>]
    [-Credential <PSCredential>]
    [-UseDefaultCredentials]
    [-Force]
    [-Scope <UpdateHelpScope>]
    [<CommonParameters>]

说明

Save-Help cmdlet 将为 PowerShell 模块下载最新的帮助文件,并将其保存到你指定的目录中。 此功能允许你更新不能访问 Internet 的计算机上的帮助文件,并使得更新多台计算机上的帮助文件更加方便。

在 Windows PowerShell 3.0 中,Save-Help 仅适用于在本地计算机上安装的模块。 虽然可以从远程计算机导入模块,或通过使用 PowerShell 远程处理从远程计算机获取对 PSModuleInfo 对象的引用,但是不会保留 HelpInfoUri 属性,并且 Save-Help 不适用于远程模块帮助。

在 PowerShell 4.0 中,通过 Windows PowerShell 远程处理保留 HelpInfoUri 属性,使 Save-Help 能够用于在远程计算机上安装的模块。 还可以通过在不具有 Internet 访问的计算机上运行 Export-Clixml,将 PSModuleInfo 对象保存到磁盘或可移动媒体、在具有 Internet 访问的计算机上导入对象,然后在 PSModuleInfo 对象上运行 Save-Help。 可以使用可移动存储介质(例如 USB 驱动器)将保存的帮助传输到远程计算机。 可以通过运行 Update-Help 将帮助安装到远程计算机上。 此过程可用于在不具有任何类型的网络访问的计算机上安装帮助。

若要安装保存的帮助文件,请运行 Update-Help cmdlet。 添加其 SourcePath 参数以指定保存了帮助文件的文件夹。

在没有参数的情况下,Save-Help 命令将为会话中的所有模块和安装在计算机(位于 PSModulePath 环境变量中列出的位置内)上的模块下载最新的帮助。 此操作会跳过不支持可更新帮助的模块,而不发出警告。

Save-Help cmdlet 会检查目标文件夹中所有帮助文件的版本。 如果有更新的帮助文件可用,此 cmdlet 将从 Internet 下载最新的帮助文件,然后将它们保存在文件夹中。 Save-Help cmdlet 的工作方式与 Update-Help cmdlet 类似,不同之处在于前者将保存下载的 Cabinet (.cab) 文件,而不是从 Cabinet 文件中提取帮助文件并将其安装在计算机上。

为每个模块保存的帮助都包括一个帮助信息 (HelpInfo XML) 文件和一个适用于帮助文件各种 UI 区域性的 Cabinet (.cab) 文件。 不需要从 cabinet 文件中提取帮助文件。 Update-Help cmdlet 将提取帮助文件、验证 XML 以确保安全,然后将帮助文件和帮助信息文件安装在模块文件夹的特定于语言的子文件夹中。

若要将模块的帮助文件保存在 PowerShell 安装文件夹 ($pshome\Modules) 中,请使用“以管理员身份运行”选项启动 PowerShell。 你必须是计算机上 Administrators 组的成员,才能为这些模块下载帮助文件。

此 cmdlet 是在 Windows PowerShell 3.0 中引入的。

示例

示例 1:为 DhcpServer 模块保存帮助

# Option 1: Run Invoke-Command to get the PSModuleInfo object for the remote DHCP Server module,
# save the PSModuleInfo object in the variable $m, and then run Save-Help.

$m = Invoke-Command -ComputerName RemoteServer -ScriptBlock { Get-Module -Name DhcpServer -ListAvailable }
Save-Help -Module $m -DestinationPath "C:\SavedHelp"


# Option 2: Open a PSSession--targeted at the remote computer that is running the DhcpServer
# module--to get the PSModuleInfo object for the remote module, and then run Save-Help.

$s = New-PSSession -ComputerName "RemoteServer"
$m = Get-Module -PSSession $s -Name "DhcpServer" -ListAvailable
Save-Help -Module $m -DestinationPath "C:\SavedHelp"


# Option 3: Open a CIM session--targeted at the remote computer that is running the DhcpServer
# module--to get the PSModuleInfo object for the remote module, and then run Save-Help.

$c = New-CimSession -ComputerName "RemoteServer"
$m = Get-Module -CimSession $c -Name "DhcpServer" -ListAvailable
Save-Help -Module $m -DestinationPath "C:\SavedHelp"

此示例显示了三种不同的方式,用于使用 Save-Help 通过已连接到 Internet 的客户端计算机为 DhcpServer 模块保存帮助,而无需在本地计算机上安装 DhcpServer 模块或 DHCP 服务器角色。

示例 2:为 DhcpServer 模块安装帮助

# First, run Export-CliXml to export the PSModuleInfo object to a shared folder or to removable media.

$m = Get-Module -Name "DhcpServer" -ListAvailable
Export-CliXml -Path "E:\UsbFlashDrive\DhcpModule.xml" -InputObject $m

# Next, transport the removable media to a computer that has Internet access, and then import the
# PSModuleInfo object with Import-CliXml. Run Save-Help to save the Help for the imported DhcpServer
# module PSModuleInfo object.

$deserialized_m = Import-CliXml "E:\UsbFlashDrive\DhcpModule.xml"
Save-Help -Module $deserialized_m -DestinationPath "E:\UsbFlashDrive\SavedHelp"

# Finally, transport the removable media back to the computer that does not have network access, and
# then install the help by running Update-Help.

Update-Help -Module DhcpServer -SourcePath "E:\UsbFlashDrive\SavedHelp"

此示例显示了如何在不能访问 Internet 的计算机上为 DhcpServer 模块安装你在示例 1 中保存的帮助。

示例 3:为所有模块保存帮助

Save-Help -DestinationPath "\\Server01\FileShare01"

此命令将为本地计算机上针对 Windows 所设置的 UI 区域性中的所有模块下载最新的帮助文件。 它将帮助文件保存在 \\Server01\Fileshare01 文件夹中。

示例 4:为计算机上的模块保存帮助

Save-Help -Module ServerManager -DestinationPath "\\Server01\FileShare01" -Credential Domain01/Admin01

此命令将为 ServerManager 模块下载最新帮助文件,然后将它们保存在 \\Server01\Fileshare01 文件夹中。

如果模块已安装在计算机上,则可以键入该模块名称作为 Module 参数的值,即使该模块未导入到当前会话中也是如此。

该命令使用 Credential 参数来提供有权写入文件共享的用户的凭据。

示例 5:为其他计算机上的模块保存帮助

Invoke-Command -ComputerName Server02 {Get-Module -Name CustomSQL -ListAvailable} | Save-Help -DestinationPath \\Server01\FileShare01 -Credential Domain01\Admin01

这些命令将为 CustomSQL 模块下载最新帮助文件,然后将它们保存在 \\Server01\Fileshare01 文件夹中。

由于 CustomSQL 模块未安装在计算机上,因此序列将包括一个 Invoke-Command 命令,以便从 Server02 计算机为 CustomSQL 模块获取模块对象,然后通过管道将模块对象传递给 Save-Help cmdlet。

如果模块未安装在计算机上,Save-Help 将需要模块对象,该对象包含有关最新帮助文件的位置的信息。

示例 6:为采用多种语言的模块保存帮助

Save-Help -Module Microsoft.PowerShell* -UICulture de-DE, en-US, fr-FR, ja-JP -DestinationPath "D:\Help"

此命令将为四种不同的 UI 区域性中的核心 PowerShell 模块保存帮助。 适用于这些区域设置的语言包不需要安装在计算机上。

仅当模块所有者在 Internet 上提供了翻译文件时,Save-Help 才可以为四种不同的 UI 区域性中的模块下载帮助文件。

示例 7:每天多次保存帮助

Save-Help -Force -DestinationPath "\\Server3\AdminShare\Help"

此命令将为安装在计算机上的所有模块保存帮助。 该命令指定 Force 参数来重写阻止 Save-Help cmdlet 在每 24 小时内多次下载帮助的规则。

Force 参数还可替代 1 GB 的限制并规避版本检查。 因此,即使版本不高于目标文件夹中的版本,也可以下载文件。

该命令使用 Save-Help cmdlet 来下载帮助文件并将其保存到指定文件夹中。 如果需要每天多次运行 Save-Help 命令,则 Force 参数是必需的。

参数

-Credential

指定用户凭据。 此 cmdlet 使用有权访问文件系统位置(由 DestinationPath 参数指定)的用户的凭据运行该命令。 仅当命令中使用了 DestinationPathLiteralPath 参数时,此参数才有效。

此参数使你可以在远程计算机上使用 DestinationPath 参数运行 Save-Help 命令。 通过提供显式凭据,你可以在远程计算机上运行该命令并访问第三台计算机上的文件共享,而不会遇到“拒绝被访问”错误,也不会使用 CredSSP 身份验证委派凭据。

键入用户名,如“User01”或“Domain01\User01”;或输入 Get-Credential cmdlet 生成的 PSCredential 对象。 如果键入用户名,系统会提示输入密码。

凭据存储在 PSCredential 对象中,密码存储为 SecureString

注意

有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?

类型:PSCredential
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-DestinationPath

指定保存帮助文件的文件夹的路径。 不要指定文件名或文件扩展名。

类型:String[]
别名:Path
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-Force

指示此 cmdlet 不遵循每天一次的限制、跳过版本检查并下载超过 1 GB 限制的文件。

在没有此参数的情况下,每个模块每 24 小时内只允许运行一次 Save-Help 命令,下载限制为每个模块 1 GB 的未压缩内容,并且用于模块的帮助文件仅在比计算机上的文件更新时才进行安装。

每天一次的限制可以保护托管帮助文件的服务器,并使你能够将 Save-Help 命令添加到 PowerShell 配置文件。

若要在没有 Force 参数的情况下,为多个 UI 区域性中的模块保存帮助,请将所有 UI 区域性包括在同一命令中,例如:Save-Help -Module PSScheduledJobs -UICulture en-US, fr-FR, pt-BR

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-FullyQualifiedModule

该值可以是模块名称、完整模块规范或模块文件的路径。

如果该值是路径,则可以是完全限定路径或相对路径。 相对路径相对于包含 using 语句的脚本进行解析。

当该值为名称或模块规范时,PowerShell 会在 PSModulePath 中搜索指定的模块。

模块规范是具有以下键的哈希表。

  • ModuleName - 必需指定模块名称。
  • GUID - 可选指定模块的 GUID。
  • 必需指定以下三个键中的至少一个。
    • ModuleVersion - 指定模块的最低可接受版本。
    • MaximumVersion - 指定模块的最低可接受版本。
    • RequiredVersion - 指定模块所需的确切版本。 这不能与其他版本键一起使用。

不能在同一命令中将 FullyQualifiedModule 参数指定为 Module 参数。 这两个参数相互排斥。

类型:ModuleSpecification[]
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-LiteralPath

指定目标文件夹的路径。 与 DestinationPath 参数的值不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配字符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

类型:String[]
别名:PSPath, LP
Position:Named
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-Module

指定此 cmdlet 下载帮助的模块。 在以逗号分隔的列表中或每行包含一个模块名称的文件中输入一个或多个模块名称或名称模式。 允许使用通配符。 还可以通过管道将模块对象从 Get-Module 传递到 Save-Help

默认情况下,Save-Help 将为支持可更新帮助的所有模块以及安装在本地计算机(位于 PSModulePath 环境变量中列出的位置内)上的模块下载帮助。

若要为未安装在计算机上的模块保存帮助,请在远程计算机上运行 Get-Module 命令。 然后,通过管道将生成的模块对象传递给 Save-Help cmdlet 或作为 ModuleInputObject 参数的值提交模块对象。

如果你指定的模块安装在计算机上,你可以输入模块名称或模块对象。 如果该模块未安装在计算机上,则必须输入一个模块对象,例如由 Get-Module cmdlet 返回的对象。

Save-Help cmdlet 的 Module 参数不接受模块文件或模块清单文件的完整路径。 若要为不在 PSModulePath 位置中的模块保存帮助,请在运行 Save-Help 命令之前将模块导入到当前会话中。

值“*”(全部)将尝试为计算机上安装的所有模块更新帮助。 这包括不支持可更新帮助的模块。 当该命令遇到不支持可更新帮助的模块时,此值可能会产生错误。

类型:PSModuleInfo[]
别名:Name
Position:1
默认值:None
必需:False
接受管道输入:True
接受通配符:True

-Scope

此参数在此 cmdlet 中不执行任何操作。

类型:UpdateHelpScope
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-UICulture

指定此 cmdlet 更新帮助文件的 UI 区域性值。 输入一个或多个语言代码(例如 es-ES)、一个包含区域性对象的变量,或者一个可获取区域性对象的命令,例如 Get-CultureGet-UICulture 命令。 不允许使用通配符。

默认情况下,Save-Help 获取操作系统的 UI 区域性集或其回退区域性中的帮助文件。 如果指定 UICulture 参数,Save-Help 仅查找指定 UI 语言的帮助。

从 PowerShell 7.4 开始,可以使用部分语言代码,例如 en 下载任何区域的英语帮助。

类型:CultureInfo[]
Position:2
默认值:Current UI culture
必需:False
接受管道输入:False
接受通配符:False

-UseDefaultCredentials

表示此 cmdlet 将使用当前用户的凭据运行命令,包括 Web 下载。 默认情况下,在没有显式凭据的情况下运行该命令。

仅当 Web 下载使用 NTLM、协商或基于 Kerberos 的身份验证时,此参数才有效。

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

PSModuleInfo

可以将模块对象通过管道传递给此 cmdlet。

输出

None

此 cmdlet 不返回任何输出。

备注

  • 若要为 $pshome\Modules 文件夹中的模块保存帮助,请使用“以管理员身份运行”选项启动 PowerShell。 仅计算机上管理员组的成员可以为 $pshome\Modules 文件夹中的模块下载帮助。
  • 为每个模块保存的帮助都包括一个帮助信息 (HelpInfo XML) 文件和一个适用于帮助文件各种 UI 区域性的 Cabinet (.cab) 文件。 不需要从 cabinet 文件中提取帮助文件。 Update-Help cmdlet 将提取帮助文件、验证 XML,然后将帮助文件和帮助信息文件安装在模块文件夹的特定于语言的子文件夹中。
  • Save-Help cmdlet 可以为未安装在计算机上的模块保存帮助。 但是,由于帮助文件安装在模块文件夹中,因此 Update-Help cmdlet 仅可为安装在计算机上的模块安装更新的帮助文件。
  • 如果 Save-Help 找不到模块的更新帮助文件,或者找不到指定语言的更新帮助文件,它将继续以静默方式显示,而不会显示错误消息。 若要查看哪些文件已由命令保存,请指定 Verbose 参数。
  • 模块是可更新帮助的最小单位。 你不能为特定 cmdlet 保存帮助;只能为模块中的所有 cmdlet 保存帮助。 若要查找包含特定 cmdlet 的模块,请将 ModuleName 属性与 Get-Command cmdlet(例如 (Get-Command \<cmdlet-name\>).ModuleName)配合使用
  • Save-Help 支持所有模块和核心 PowerShell 管理单元。它不支持任何其他管理单元。
  • Update-HelpSave-Help cmdlet 使用以下端口下载帮助文件:用于 HTTP 的端口 80 和用于 HTTPS 的端口 443。
  • Update-HelpSave-Help cmdlet 在 Windows 预安装环境 (Windows PE) 中不受支持。