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 的计算机上的帮助文件,并更轻松地更新多台计算机上的帮助文件。 此 cmdlet 已在 Windows PowerShell 3.0 中引入。

从 Windows PowerShell 4.0 开始,可以使用 Save-Help 为远程计算机上安装的模块下载帮助文件。 还可以在无法访问 Internet 的计算机上使用 Export-Clixml 保存 PSModuleInfo 对象,在具有 Internet 访问权限的计算机上导入该对象,然后在 PSModuleInfo 对象上运行 Save-Help。 获得保存的帮助后,可以将其复制到远程计算机,并通过运行 Update-Help进行安装。 此过程可用于在没有任何网络访问权限的计算机上安装帮助。

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

Save-Help cmdlet 检查目标文件夹中任何帮助文件的版本。 如果较新的帮助文件可用,此 cmdlet 将从 Internet 下载最新的帮助文件,然后将其保存在文件夹中。 Save-Help cmdlet 的工作方式与 Update-Help cmdlet 一样,只不过它保存下载的内容,而不是提取帮助文件并将其安装在计算机上。

每个模块的保存帮助包括一个帮助信息(HelpInfo XML)文件和一个内阁或 ZIP 存档(.cab.zip),用于每种语言的帮助文件。 在 Windows 上,该命令下载内阁文件。 在 Linux 和 macOS 上,命令下载 ZIP 文件。

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

若要安装保存的帮助文件,请使用 SourcePath 参数运行 Update-Help,以指定包含已保存的帮助文件的文件夹。 Update-Help 从存档中提取帮助文件,并将其安装到相应的位置。

示例

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

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

# Option 1:
# 1. Run Invoke-Command to get the PSModuleInfo object for the DhcpServer module,
# 2. Save-Help on the PSModuleInfo object to save the help files to a folder on
#    the local computer.

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


# Option 2:
# 1. Open a PSSession to the remote computer that's running the DhcpServer module
# 2. Get the PSModuleInfo object from the remote computer
# 3. Save-Help on the PSModuleInfo object

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


# Option 3:
# 1. Open a CimSession to the remote computer that's running the DhcpServer module
# 2. Get the PSModuleInfo object from the remote computer
# 3. Save-Help on the PSModuleInfo object
$cimsession = New-CimSession -ComputerName "RemoteServer"
$mod = Get-Module -CimSession $cimsession -Name "DhcpServer" -ListAvailable
Save-Help -Module $mod -DestinationPath "C:\SavedHelp"

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

此示例演示如何为未连接网络的计算机安装帮助。 对于此示例,第一台计算机未连接到可访问的网络。 必须使用可移动媒体将文件复制到该文件。 第二台计算机连接到 Internet,可以下载帮助文件。

# On the first computer, get the PSModuleInfo object for the module and save it to
# removable media.

Get-Module -Name "DhcpServer" -ListAvailable |
    Export-CliXml -Path E:\UsbFlashDrive\DhcpModule.xml

# Move the removable media to a computer that has internet access, and then import the
# PSModuleInfo object. Run Save-Help on the imported PSModuleInfo object and save the help
# files to the removable media.

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

# Finally, move the removable media back to the first computer and install the help.

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

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

此命令下载本地计算机上所有模块的最新帮助文件。 它将帮助文件保存在 \\Server01\Fileshare01 文件夹中。

Save-Help -DestinationPath \\Server01\FileShare01

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

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

$saveHelpSplat = @{
    Module = 'ServerManager'
    DestinationPath = '\\Server01\FileShare01'
    Credential = 'Domain01/Admin01'
}
Save-Help @saveHelpSplat

在计算机上安装模块时,即使模块未导入当前会话,也可以将模块名称键入为 Module 参数的值。

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

示例 5:在不同的计算机上保存模块的帮助

这些命令下载 CustomSQL 模块的最新帮助文件,并将其保存在 \\Server01\Fileshare01 文件夹中。

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

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

当计算机上未安装模块时,Save-Help 需要模块对象,其中包括有关最新帮助文件位置的信息。

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

此命令在四个不同的 UI 区域性中保存核心 PowerShell 模块的帮助。 这些区域设置的语言包不必安装在计算机上。

$saveHelpSplat = @{
    Module = 'Microsoft.PowerShell*'
    UICulture = 'de-DE', 'en-US', 'fr-FR', 'ja-JP'
    DestinationPath = "D:\Help"
}
Save-Help @saveHelpSplat

Save-Help 仅在模块所有者使翻译的文件在 Internet 上可用时,才能下载不同 UI 区域性中的模块的帮助文件。

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

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

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

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

该命令使用 Save-Help cmdlet 下载帮助文件并将其保存到指定文件夹。 必须每天多次运行 命令时,需要 Save-Help 参数。

参数

-Credential

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

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

键入用户名(如 User01Domain01\User01),或输入由 cmdlet 生成的 Get-Credential 对象。 如果键入用户名,系统会提示输入密码。

凭据存储在 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 - 指定模块的确切所需版本。 这不能与其他版本密钥一起使用。

不能在与 Module 参数相同的命令中指定 FullyQualifiedModule 参数。 这两个参数互斥。

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

-LiteralPath

指定目标文件夹的路径。 与 DestinationPath 参数的值不同,LiteralPath 参数的值与类型化完全相同。 不会将任何字符解释为通配符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

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

-Module

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

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

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

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

cmdlet 的 Save-Help 参数不接受模块文件或模块清单文件的完整路径。 若要为不在 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 仅查找指定语言的帮助。

从 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。 只有计算机上的 Administrators 组的成员才能下载 $PSHOME\Modules 文件夹中模块的帮助。
  • 每个模块的已保存帮助包括一个帮助信息(HelpInfo XML)文件和一个用于每个 UI 区域性的帮助文件的一个内阁(.cab)文件。 无需从内阁文件中提取帮助文件。 Update-Help cmdlet 提取帮助文件、验证 XML,然后在模块文件夹的语言特定子文件夹中安装帮助文件和帮助信息文件。
  • Save-Help cmdlet 可以为计算机上未安装的模块保存帮助。 但是,由于帮助文件安装在模块文件夹中,Update-Help cmdlet 只能为计算机上安装的模块安装更新的帮助文件。
  • 如果 Save-Help 找不到模块的更新帮助文件,或者找不到指定语言的更新帮助文件,则它将继续以无提示方式继续,而不会显示错误消息。 若要查看命令保存的文件,请指定 详细 参数。
  • 模块是可更新帮助的最小单元。 不能为特定 cmdlet 保存帮助,仅适用于模块中的所有 cmdlet。 若要查找包含特定 cmdlet 的模块,请使用 ModuleName 属性和 Get-Command cmdlet,例如,(Get-Command \<cmdlet-name\>).ModuleName
  • Save-Help 支持所有模块和核心 PowerShell 管理单元。它不支持任何其他管理单元。
  • Update-HelpSave-Help cmdlet 使用以下端口下载帮助文件:HTTP 端口 80 和 HTTPS 端口 443。
  • Windows 预安装环境(Windows PE)不支持 Update-HelpSave-Help cmdlet。