Import-Clixml

导入 CLIXML 文件并在 PowerShell 中创建相应的对象。

语法

Import-Clixml
      [-Path] <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]
Import-Clixml
      -LiteralPath <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]

说明

cmdlet Import-Clixml 将已序列化为公共语言基础结构 (CLI) XML 文件的对象导入。 在 Windows 计算机上, 的 Import-Clixml 一个有价值用途是导入凭据和安全字符串,这些凭据和安全字符串使用 Export-Clixml导出为安全 XML。 示例 #2 演示如何使用 Import-Clixml 导入安全凭据对象。

CLIXML 数据反序列化回 PowerShell 对象。 但是,反序列化的对象不是实时对象。 它们是序列化时对象的快照。 反序列化的对象包括属性,但没有方法。

TypeNames 属性包含前缀为 Deserialized的原始类型名称。 示例 #3 显示了反序列化对象的 TypeNames 属性。

Import-Clixml 使用 BOM) (字节顺序标记来检测文件的编码格式。 如果文件没有 BOM,则假定编码为 UTF8。

有关 CLI 的详细信息,请参阅 语言独立性

示例

示例 1:导入序列化文件并重新创建对象

此示例使用 Export-Clixml cmdlet 保存由 Get-Process返回的进程信息的序列化副本。 Import-Clixml 检索序列化文件的内容,并重新创建存储在 变量中的 $Processes 对象。

Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml

示例 2:导入安全凭据对象

在此示例中,给定通过运行 Get-Credential cmdlet 存储在 变量中的$Credential凭据,可以运行 Export-Clixml cmdlet 将凭据保存到磁盘。

重要

Export-Clixml 仅在 Windows 上导出加密凭据。 在非 Windows 操作系统(如 macOS 和 Linux)上,凭据以纯文本形式导出。

$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential | Export-Clixml $Credxmlpath
$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential = Import-Clixml $Credxmlpath

cmdlet Export-Clixml 使用 Windows 数据保护 API 加密凭据对象。 加密可确保只有用户帐户才能解密凭据对象的内容。 导出 CLIXML 的文件不能在不同的计算机上或由其他用户使用。

在此示例中,存储凭据的文件由 TestScript.ps1.credential表示。 将 TestScript 替换为要加载凭据的脚本的名称。

将凭据对象向下发送到 Export-Clixml管道,并将其保存到在第一个命令中指定的路径 $Credxmlpath

若要将凭据自动导入脚本,请运行最后两个命令。 运行 Import-Clixml ,将受保护的凭据对象导入脚本。 此导入消除了在脚本中公开纯文本密码的风险。

示例 3:检查反序列化对象的 TypeNames 属性

此示例演示如何导入存储为 CLIXML 数据的对象。 数据反序列化回 PowerShell 对象。 但是,反序列化的对象不是实时对象。 它们是序列化时对象的快照。 反序列化的对象包括属性,但没有方法。

$original = [pscustomobject] @{
    Timestamp = Get-Date
    Label     = 'Meeting event'
}
$original | Add-Member -MemberType ScriptMethod -Name GetDisplay -Value {
    '{0:yyyy-MM-dd HH:mm} {1}' -f $this.Timestamp, $this.Label
}
$original | Get-Member -MemberType ScriptMethod

TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Label       NoteProperty string Label=Meeting event
Timestamp   NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
GetDisplay  ScriptMethod System.Object GetDisplay();

$original | Export-Clixml -Path event.clixml
$deserialized = Import-CliXml -Path event.clixml
$deserialized | Get-Member

TypeName: Deserialized.System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Label       NoteProperty string Label=Meeting event
Timestamp   NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM

请注意,中 $original 对象的类型是 System.Management.Automation.PSCustomObject,但 中 $deserialized 对象的类型是 Deserialized.System.Management.Automation.PSCustomObject。 此外, GetDisplay() 反序列化对象中缺少 方法。

参数

-First

只获取指定数量的对象。 输入要获取的对象数量。

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeTotalCount

报告数据集中对象总数,后跟所选对象。 如果 cmdlet 无法确定总计数,则显示 “未知的总计数”。 整数具有一个 Accuracy 属性,该属性指示总计数值的可靠性。 Accuracy 值的范围从 到 0.01.0 ,其中 0.0 表示 cmdlet 无法对对象进行计数,1.0表示计数是精确的,并且 和 1.0 之间的0.0值指示越来越可靠的估计值。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

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

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

指定 XML 文件的路径。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Skip

忽略指定数量的对象,然后获取其余对象。 输入要跳过的对象数量。

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

String

可以通过管道将包含路径的字符串传递给此 cmdlet。

输出

PSObject

此 cmdlet 返回从存储的 XML 文件中反序列化的对象。

备注

为一个参数指定多个值时,请使用逗号分隔这些值。 例如 <parameter-name> <value1>, <value2>