Export-Clixml
建立物件或物件的 XML 型表示法,並將其儲存在檔案中。
語法
ByPath (預設值)
Export-Clixml
[-Path] <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Export-Clixml
-LiteralPath <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Export-Clixml Cmdlet 會將物件串行化為 Common Language Infrastructure (CLI) XML 型表示法,並將其儲存在檔案中。 接著,您可以使用 Import-Clixml Cmdlet,根據該檔案的內容重新建立儲存的物件。 如需有關 CLI 的更多資訊,請參閱 語言獨立性。
此 Cmdlet 類似於 ConvertTo-Xml,不同之處在於 Export-Clixml 會將產生的 XML 儲存在檔案中。
ConvertTo-XML 傳回 XML,因此您可以在 PowerShell 中繼續處理它。
在 Windows 電腦上使用 Export-Clixml 的一個有用的功能,是將憑證和安全字串安全地匯出為 XML。 如需範例,請參閱範例 3。
範例
範例 1:將字串匯出至 XML 檔案
這個範例建立了一個 XML 檔案,儲存在目前目錄中,並表示字串 這是測試。
"This is a test" | Export-Clixml -Path .\sample.xml
字串 This is a test 被傳送到管線下。
Export-Clixml 會使用 Path 參數,在目前目錄中建立名為 sample.xml 的 XML 檔案。
範例 2:將物件匯出至 XML 檔案
這個範例示範如何將對象匯出至 XML 檔案,然後從檔案匯入 XML 來建立 物件。
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
Get-Acl Cmdlet 會取得 Test.txt 檔案的安全性描述元。 它會將物件傳送到管線,以便將安全描述傳遞到 Export-Clixml。 物件的 XML 表示法會儲存在名為 FileACL.xml的檔案中。
Import-Clixml Cmdlet 會從 FileACL.xml 檔案中的 XML 建立 物件。 然後,它會將 物件儲存在 $fileacl 變數中。
範例 3:加密 Windows 上導出的認證物件
在此範例中,假設您已藉由執行 $Credential Cmdlet,將認證儲存在 Get-Credential 變數中,您可以執行 Export-Clixml Cmdlet,將認證儲存至磁碟。
這很重要
Export-Clixml 只會匯出 Windows 上的加密認證。 在macOS和Linux等非 Windows 作業系統上,認證會匯出為儲存為 Unicode 字元陣列的純文字。 這提供一些模糊化,但不提供加密。
$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,將受保護的認證物件匯入腳本中。 此匯入可消除在您的文稿中公開純文字密碼的風險。
範例 4:匯出 Linux 或 macOS 上的認證物件
在此範例中,我們會使用 Cmdlet,在 $Credential 變數中建立 Get-Credential。 然後使用 Export-Clixml 將認證儲存至磁碟。
這很重要
Export-Clixml 只會匯出 Windows 上的加密認證。 在macOS和Linux等非 Windows 作業系統上,認證會匯出為儲存為 Unicode 字元陣列的純文字。 這提供一些模糊化,但不提供加密。
PS> $Credential = Get-Credential
PowerShell credential request
Enter your credentials.
User: User1
Password for user User1: ********
PS> $Credential | Export-Clixml ./cred2.xml
PS> Get-Content ./cred2.xml
...
<Props>
<S N="UserName">User1</S>
<SS N="Password">700061007300730077006f0072006400</SS>
</Props>
...
PS> 'password' | Format-Hex -Encoding unicode
Label: String (System.String) <52D60C91>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 p a s s w o r d
此範例中 Get-Content 的輸出已截斷,以專注於 XML 檔案中的認證資訊。 請注意,密碼的純文本值會儲存在 XML 檔案中,做為 Unicode 字元陣列,如 Format-Hex所證明。 因此,值會經過編碼,但未加密。
參數
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | cf |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Depth
指定在 XML 表示中包含多少層次的嵌套物件。 預設值是 2。
可以在 Types.ps1xml 檔案中為物件類型覆寫預設值。 如需詳細資訊,請參閱 about_Types.ps1xml。
參數屬性
| 類型: | Int32 |
| 預設值: | 2 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Encoding
指定目標檔案的編碼類型。 預設值是 utf8NoBOM。
此參數可接受的值如下:
-
ascii:使用 ASCII (7 位) 字元集的編碼方式。 -
bigendianunicode:使用高位元組序以 UTF-16 格式編碼。 -
bigendianutf32:使用大端字節順序以 UTF-32 格式進行編碼。 -
oem:使用 MS-DOS 和控制台程序的預設編碼方式。 -
unicode:使用小端位元組順序,以UTF-16格式進行編碼。 -
utf7:以UTF-7格式編碼。 -
utf8:以UTF-8格式編碼。 -
utf8BOM:以 UTF-8 格式(含位元組順序標記 BOM)編碼 -
utf8NoBOM:以 UTF-8 格式編碼,不含位元組順序標記【BOM】 -
utf32:以UTF-32格式編碼。
從 PowerShell 6.2 開始,編碼 參數也允許已註冊代碼頁的數值識別元(例如 -Encoding 1251)或已註冊代碼頁的字串名稱(例如 -Encoding "windows-1251")。 如需詳細資訊,請參閱 Encoding.CodePage的 .NET 檔。
備註
UTF-7* 不再建議使用。 自 PowerShell 7.1 起,如果您為 utf7 參數指定 ,則會撰寫警告。
參數屬性
| 類型: | Encoding |
| 預設值: | UTF8NoBOM |
| 接受的值: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Force
強制命令執行,而不要求使用者確認。
必要時,Cmdlet 會清除輸出檔的唯讀屬性。 Cmdlet 會在命令完成時嘗試重設只讀屬性。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定要轉換的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。 您也可以使用管線將物件傳送至 Export-Clixml。
參數屬性
| 類型: | PSObject |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-LiteralPath
指定將儲存物件之 XML 表示的檔案路徑。 與 Path不同,LiteralPath 參數的值會被按照輸入時的格式原樣使用。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | PSPath, LP |
參數集
ByLiteralPath
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-NoClobber
指出 Cmdlet 不會覆寫現有檔案的內容。 根據預設,如果檔案存在於指定的路徑中,Export-Clixml 會覆寫檔案而不發出警告。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | NoOverwrite |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Path
指定將儲存物件之 XML 表示的檔案路徑。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
ByPath
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 該 Cmdlet 未被執行。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | 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。
輸入
PSObject
您可以將任何物件透過管線送至此指令。
輸出
FileInfo
此 Cmdlet 會傳回 FileInfo 物件,此物件代表具有預存數據的已建立檔案。