Import-Clixml
匯入 CLIXML 檔案,並在 PowerShell 中建立對應的物件。
語法
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
只取得指定的物件數目。 輸入要取得的物件數目。
類型: | UInt64 |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-IncludeTotalCount
報告數據集中物件的總數,後面接著選取的物件。 如果 Cmdlet 無法判斷總計數,則會顯示 未知的總計數。 整數具有 Accuracy 屬性,表示總計數值的可靠性。 精確度的值範圍從 0.0
到 1.0
,0.0
表示 Cmdlet 無法計算物件、1.0
表示計數精確,以及和之間的1.0
0.0
值表示越來越可靠的估計值。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-LiteralPath
指定 XML 檔案的路徑。 與 Path 不同,LiteralPath 參數的值會與輸入時完全相同。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。
類型: | String[] |
別名: | PSPath, LP |
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>
。