Export-Clixml
建立一或多個物件的 XML 表示法,並將它儲存在檔案中。
Syntax
Export-Clixml
[-Path] <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Clixml
-LiteralPath <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdlet Export-Clixml
會建立 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
字串 這是在 管線下傳送的測試。 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
Cmdlet Get-Acl
會取得檔案的安全性描述元 Test.txt
。 它會將物件向下傳送至管線,以將安全性描述項傳遞至 Export-Clixml
。 物件的 XML 型表示法會儲存在名為 FileACL.xml
的檔案中。
Cmdlet Import-Clixml
會從檔案中的 FileACL.xml
XML 建立 物件。 然後,它會將物件儲存在變數中 $fileacl
。
範例 3:加密 Windows 上導出的認證物件
在此範例中,假設您已藉由執行 Get-Credential
Cmdlet 將認證儲存在變數中$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
Cmdlet Export-Clixml
會使用 Windows 資料保護 API 來加密認證物件。 加密可確保只有該電腦上的用戶帳戶才能解密認證對象的內容。
導出的 CLIXML
檔案不能在不同的計算機上或由不同的使用者使用。
在此範例中,儲存認證的檔案會以 TestScript.ps1.credential
表示。 將 TestScript 取代為您正在載入認證的腳本名稱。
您會將認證物件向下傳送至 Export-Clixml
,並將它儲存到您在第一個命令中指定的路徑 $Credxmlpath
。
若要將認證自動匯入至您的指令碼,請執行最後兩個命令。 執行 Import-Clixml
以將受保護的認證物件匯入腳本中。 此匯入可消除在文稿中公開純文本密碼的風險。
範例 4:匯出 Linux 或 macOS 上的認證物件
在此範例中,我們會使用 Get-Credential
Cmdlet 在 $Credential
變數中建立 PSCredential。 然後,我們會使用 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
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 檔案中的認證資訊。 請注意,密碼的純文本值會以 Unicode 字元陣列的形式儲存在 XML 檔案中,如 所 Format-Hex
證明。 因此,值會經過編碼,但不會加密。
參數
-Confirm
在執行 Cmdlet 前提示您確認。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Depth
指定 XML 表示法中包含多少層的內含物件。 預設值是 2
。
您可以覆寫檔案中 Types.ps1xml
物件類型的預設值。 如需詳細資訊,請參閱 about_Types.ps1xml。
Type: | Int32 |
Position: | Named |
Default value: | 2 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
指定目標檔案的編碼類型。 預設值是 utf8NoBOM
。
此參數可接受的值如下所示:
ascii
:使用 ASCII (7 位) 字元集的編碼方式。bigendianunicode
:使用大位元組位元組順序以UTF-16格式編碼。oem
:使用 MS-DOS 和控制台程式的預設編碼方式。unicode
:使用位元組由小到大的順序,以UTF-16格式編碼。utf7
:以 UTF-7 格式編碼。utf8
:以 UTF-8 格式編碼。utf8BOM
:使用位元組順序標記 (BOM) 以 UTF-8 格式編碼utf8NoBOM
:以 UTF-8 格式編碼,不含位元組順序標記 (BOM)utf32
:以 UTF-32 格式編碼。
從 PowerShell 6.2 開始, Encoding 參數也允許已註冊代碼頁的數值標識符, (例如 -Encoding 1251
) 或已註冊代碼頁的字串名稱 (,例如 -Encoding "windows-1251"
) 。 如需詳細資訊,請參閱 Encoding.CodePage 的 .NET 檔。
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
強制執行命令而不要求使用者確認。
會導致 Cmdlet 清除輸出檔案的唯讀屬性 (如有必要)。 當命令完成時,Cmdlet 將會嘗試重設唯讀屬性。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定要轉換的物件。 輸入包含物件的變數,或輸入可取得物件的命令或運算式。 您也可以使用管線會傳送至 Export-Clixml
。
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
指定將儲存物件之 XML 表示法的檔案的路徑。 不同於Path,LiteralPath 參數的值會與輸入時完全相同。 沒有字元會被視為萬用字元。 如果路徑包含逸出字元,請將它括在單引號中。 單引號會指示PowerShell不要將任何字元解譯為逸出序列。
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoClobber
表示 Cmdlet 不會覆寫現有檔案的內容。 根據預設,如果檔案存在於指定的路徑中,則會 Export-Clixml
覆寫檔案而不發出警告。
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定將儲存物件之 XML 表示法的檔案的路徑。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
顯示執行 Cmdlet 後會發生的情況。 不會執行此 Cmdlet。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
您可以將任何物件管線至 Export-Clixml
。
輸出
Export-Clixml
會建立包含 XML 的檔案。