Import-Clixml
导入 CLIXML 文件并在 PowerShell 中创建相应的对象。
语法
		ByPath (默认值)
	 
	Import-Clixml
    [-Path] <String[]>
    [-IncludeTotalCount]
    [-Skip <UInt64>]
    [-First <UInt64>]
    [<CommonParameters>]
		ByLiteralPath
	  
	Import-Clixml
    -LiteralPath <String[]>
    [-IncludeTotalCount]
    [-Skip <UInt64>]
    [-First <UInt64>]
    [<CommonParameters>]
说明
              Import-Clixml cmdlet 导入已序列化为公共语言基础结构 (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:导入安全凭据对象
在此示例中,如果您已通过运行 $Credential cmdlet 将凭据存储在 Get-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
              Export-Clixml cmdlet 使用 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
只获取指定数量的对象。 输入要获取的对象数。
参数属性
| 类型: | UInt64 | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-IncludeTotalCount  
		报告数据集中对象的总数,然后报告所选对象的数量。 如果 cmdlet 无法确定总计数,则会显示 未知的总计数。 该整数具有 准确性 属性,指示总计数值的可靠性。 
              准确性 的值范围从 0.0 到 1.0,其中 0.0 表示 cmdlet 无法对对象进行计数,1.0 表示计数精确,0.0 和 1.0 之间的值表示越来越可靠的估计。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-LiteralPath 
		指定 XML 文件的路径。 与 Path不同,LiteralPath 参数的值按输入原样使用。 不会将任何字符解释为通配符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
参数属性
| 类型: | String[] | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | PSPath, LP | 
参数集
					ByLiteralPath 
					
				  
				| Position: | Named | 
| 必需: | True | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | True | 
| 来自剩余参数的值: | False | 
-Path
指定 XML 文件的路径。
参数属性
| 类型: | String[] | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ByPath 
					
				 
				| Position: | 0 | 
| 必需: | True | 
| 来自管道的值: | True | 
| 来自管道的值(按属性名称): | True | 
| 来自剩余参数的值: | False | 
-Skip
忽略指定的对象数,然后获取其余对象。 输入要跳过的对象数。
参数属性
| 类型: | UInt64 | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
String
可以通过管道将包含路径的字符串传递给此 cmdlet。
输出
PSObject
此 cmdlet 返回从存储的 XML 文件反序列化的对象。
备注
为参数指定多个值时,请使用逗号分隔值。 例如,<parameter-name> <value1>, <value2>。