Export-Clixml
オブジェクトまたはオブジェクトの XML ベースの表現を作成し、ファイルに格納します。
構文
Export-Clixml
[-Depth <Int32>]
[-Path] <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Clixml
[-Depth <Int32>]
-LiteralPath <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
Export-Clixml
コマンドレットは、オブジェクトを共通言語インフラストラクチャ (CLI) XML ベースの表現にシリアル化し、ファイルに格納します。 その後、Import-Clixml
コマンドレットを使用して、そのファイルの内容に基づいて保存されたオブジェクトを再作成できます。 CLI の詳細については、「言語に依存する」を参照してください。
このコマンドレットは ConvertTo-Xml
に似ていますが、結果の XML Export-Clixml
ファイルに格納される点が異なります。
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
コマンドレットは、Test.txt
ファイルのセキュリティ記述子を取得します。 パイプラインの下にオブジェクトを送信して、セキュリティ記述子を Export-Clixml
に渡します。 オブジェクトの XML ベースの表現は、FileACL.xml
という名前のファイルに格納されます。
Import-Clixml
コマンドレットは、FileACL.xml
ファイル内の XML からオブジェクトを作成します。 次に、オブジェクトを $fileacl
変数に保存します。
例 3: Windows でエクスポートされた資格情報オブジェクトを暗号化する
この例では、Get-Credential
コマンドレットを実行して $Credential
変数に格納した資格情報を指定すると、Export-Clixml
コマンドレットを実行して資格情報をディスクに保存できます。
大事な
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
コマンドレットは、Windows Data Protection APIを使用して資格情報オブジェクトを暗号化します。 暗号化により、そのコンピューター上のユーザー アカウントのみが資格情報オブジェクトの内容の暗号化を解除できるようになります。
エクスポートされた CLIXML
ファイルを別のコンピューターまたは別のユーザーで使用することはできません。
この例では、資格情報が格納されているファイルは TestScript.ps1.credential
で表されます。
TestScript を、資格情報を読み込むスクリプトの名前に置き換えます。
パイプラインの下に資格情報オブジェクトを送信して Export-Clixml
し、最初のコマンドで指定したパス ($Credxmlpath
) に保存します。
資格情報をスクリプトに自動的にインポートするには、最後の 2 つのコマンドを実行します。
Import-Clixml
を実行して、セキュリティで保護された資格情報オブジェクトをスクリプトにインポートします。 このインポートにより、スクリプト内のプレーンテキスト パスワードが公開されるリスクがなくなります。
例 4: Linux または macOS での資格情報オブジェクトのエクスポート
この例では、Get-Credential
コマンドレットを使用して、$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
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 ファイル内の資格情報に注目するために切り捨てられました。 パスワードのプレーン テキスト値は、Format-Hex
によって実証された Unicode 文字配列として XML ファイルに格納されることに注意してください。 そのため、値はエンコードされますが、暗号化されません。
パラメーター
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Depth
XML 表現に含まれる包含オブジェクトのレベルの数を指定します。 既定値は 2
です。
Types.ps1xml
ファイル内のオブジェクト型の既定値をオーバーライドできます。 詳細については、about_Types.ps1xmlを参照してください。
型: | Int32 |
配置: | Named |
規定値: | 2 |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Encoding
ターゲット ファイルのエンコードの種類を指定します。 既定値は utf8NoBOM
です。
このパラメーターに使用できる値は次のとおりです。
-
ascii
: ASCII (7 ビット) 文字セットのエンコードを使用します。 -
ansi
: 現在のカルチャの ANSI コード ページのエンコードを使用します。 このオプションは 7.4 で追加されました。 -
bigendianunicode
: ビッグ エンディアンバイト順を使用して UTF-16 形式でエンコードします。 -
bigendianutf32
: ビッグ エンディアンバイト順を使用して UTF-32 形式でエンコードします。 -
oem
: MS-DOS およびコンソール プログラムの既定のエンコードを使用します。 -
unicode
: リトル エンディアンバイト順を使用して UTF-16 形式でエンコードします。 -
utf7
: UTF-7 形式でエンコードします。 -
utf8
: UTF-8 形式でエンコードします。 -
utf8BOM
: バイト オーダー マーク (BOM) を使用して UTF-8 形式でエンコードします。 -
utf8NoBOM
: バイト オーダー マーク (BOM) なしで UTF-8 形式でエンコードします -
utf32
: UTF-32 形式でエンコードします。
PowerShell 6.2 以降では、Encoding パラメーターを使用すると、登録済みのコード ページ (-Encoding 1251
など) の数値 ID や、登録されたコード ページの文字列名 (-Encoding "windows-1251"
など) も使用できます。 詳細については、Encoding.CodePageの .NET ドキュメントを参照してください。
PowerShell 7.4 以降では、Encoding パラメーターの Ansi
値を使用して、手動で指定しなくても、現在のカルチャの ANSI コード ページの数値 ID を渡すことができます。
手記
UTF-7 *使用することは推奨されなくなりました。 PowerShell 7.1 の時点で、Encoding パラメーターに utf7
を指定すると警告が書き込まれます。
型: | Encoding |
指定可能な値: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
配置: | Named |
規定値: | UTF8NoBOM |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Force
ユーザーの確認を求めずにコマンドを強制的に実行します。
必要に応じて、コマンドレットで出力ファイルの読み取り専用属性をクリアします。 コマンドレットは、コマンドの完了時に読み取り専用属性のリセットを試みます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
変換するオブジェクトを指定します。 オブジェクトを含む変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。 パイプ オブジェクトを Export-Clixml
することもできます。
型: | PSObject |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-LiteralPath
オブジェクトの XML 表現が格納されるファイルへのパスを指定します。 Pathとは異なり、LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
型: | String |
Aliases: | PSPath, LP |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-NoClobber
コマンドレットが既存のファイルの内容を上書きしないことを示します。 既定では、指定したパスにファイルが存在する場合、Export-Clixml
は警告なしでファイルを上書きします。
型: | SwitchParameter |
Aliases: | NoOverwrite |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Path
オブジェクトの XML 表現が格納されるファイルへのパスを指定します。
型: | String |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
任意のオブジェクトをこのコマンドレットにパイプライン処理できます。
出力
このコマンドレットは、保存されたデータを含む作成されたファイルを表す FileInfo オブジェクトを返します。
関連リンク
PowerShell