Import-Clixml

匯入 CLIXML 檔案,並在 PowerShell 中建立對應的物件。

Syntax

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

Description

Cmdlet 會 Import-Clixml 匯入已串行化為 Common Language Infrastructure (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

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 屬性,表示總計數值的可靠性。 精確度的值範圍從 0.01.00.0表示 Cmdlet 無法計算物件、1.0表示計數精確,以及和之間的1.00.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>