当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Import-Clixml (Microsoft.PowerShell.Utility)

作者:精品下载站 日期:2024-12-14 02:05:56 浏览:16 分类:玩电脑

Import-Clixml (Microsoft.PowerShell.Utility)


Import-Clixml

模块 :Microsoft.PowerShell.Utility

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

句法

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

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

参数

-First

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

类型 :

UInt64

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-IncludeTotalCount

报告数据集中的对象总数,后跟所选对象。如果 cmdlet 无法确定总计数,则会显示未知总计数。该整数具有准确性属性,指示总计数值的可靠性。 准确度的值范围为 0.01.0,其中 0.0 表示 cmdlet 无法对对象进行计数, 1.0 表示计数准确,0.01.0 之间的值表示估计值越来越可靠。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-LiteralPath

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

类型 :

String[]

别名:

PSPath, LP

位置:

命名

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Path

指定 XML 文件的路径。

类型 :

String[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Skip

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

类型 :

UInt64

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

字符串

您可以通过管道传输包含此 cmdlet 路径的字符串。

输出

PSObject

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

笔记

为参数指定多个值时,请使用逗号分隔这些值。例如,<参数名称> 、

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯