Import-Clixml
在 PowerShell 中导入 CLIXML 文件并创建相应的对象。
语法
Import-Clixml
[-Path] <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
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:导入安全凭据对象
在此示例中,如果通过运行 Get-Credential
cmdlet 将凭据存储在 $Credential
变量中,则可以运行 Export-Clixml
cmdlet 来将凭据保存到磁盘。
重要
Export-Clixml
仅导出 Windows 上的加密凭据。 在 macOS 和 Linux 等非 Windows 操作系统上,凭据以纯文本形式导出。
$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
请注意,对象的类型为 System.Management.Automation.PSCustomObject,但该对象$deserialized
的类型为 Deserialized.System.Management.Automation.PSCustomObject。$original
此外, GetDisplay()
反序列化对象中缺少该方法。
参数
-First
只获取指定数量的对象。 输入要获取的对象数量。
类型: | UInt64 |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-IncludeTotalCount
报告数据集中的对象总数,后跟所选的对象。 如果 cmdlet 无法确定总计数,它会显示“Unknown total count”。 该整数有一个 Accuracy 属性,表示总计数值的可靠性。 Accuracy 值的范围为从 0.0
到 1.0
,其中 0.0
表示 cmdlet 无法计算对象计数,1.0
表示计数是准确的,介于 0.0
和 1.0
之间的值表示可靠性递增的估值。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-LiteralPath
指定 XML 文件的路径。 与 Path 不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
类型: | String[] |
别名: | PSPath |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Path
指定 XML 文件的路径。
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Skip
忽略指定数量的对象,然后获取其余对象。 输入要跳过的对象数量。
类型: | UInt64 |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道将包含路径的字符串传递给此 cmdlet。
输出
此 cmdlet 返回从存储的 XML 文件反序列化的对象。
备注
为一个参数指定多个值时,请使用逗号分隔这些值。 例如 <parameter-name> <value1>, <value2>
。