Import-Clixml
CLIXML ファイルをインポートし、PowerShell で対応するオブジェクトを作成します。
構文
Import-Clixml
[-Path] <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Import-Clixml
-LiteralPath <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
説明
Import-Clixml
コマンドレットは、シリアル化されたオブジェクトを共通言語インフラストラクチャ (CLI) XML ファイルにインポートします。 Windows コンピューターでの Import-Clixml
の重要な用途は、 Export-Clixml
を使用してセキュリティで保護された XML としてエクスポートされた資格情報とセキュリティで保護された文字列をインポートすることです。
例 2 は、 Import-Clixml
を使用してセキュリティで保護された資格情報オブジェクトをインポートする方法を示しています。
CLIXML データは PowerShell オブジェクトに逆シリアル化されます。 ただし、逆シリアル化されたオブジェクトはライブ オブジェクトではありません。 これらは、シリアル化時のオブジェクトのスナップショットです。 逆シリアル化されたオブジェクトにはプロパティが含まれますが、メソッドは含まれていません。
TypeNames プロパティには、先頭に Deserialized
が付いた元の型名が含まれます。
例 3 は、逆シリアル化されたオブジェクトの TypeNames プロパティを示しています。
Import-Clixml
では、バイトオーダー マーク (BOM) を使用してファイルのエンコード形式を検出します。 ファイルに BOM がない場合は、エンコードが UTF8 であると見なされます。
CLI の詳細については、「 Language independence」を参照してください。
例
例 1: シリアル化されたファイルをインポートし、オブジェクトを再作成する
この例では、 Export-Clixml
コマンドレットを使用して、 Get-Process
によって返されるプロセス情報のシリアル化されたコピーを保存します。 Import-Clixml
は、シリアル化されたファイルの内容を取得し、 $Processes
変数に格納されているオブジェクトを再作成します。
Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml
例 2: セキュリティで保護された資格情報オブジェクトをインポートする
この例では、Get-Credential
コマンドレットを実行して$Credential
変数に格納した資格情報を指定すると、Export-Clixml
コマンドレットを実行して資格情報をディスクに保存できます。
重要
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
Export-Clixml
コマンドレットは、Windows Data Protection API を使用して資格情報オブジェクトを暗号化します。 暗号化により、ユーザー アカウントのみが資格情報オブジェクトの内容を暗号化解除できるようになります。 エクスポートされた CLIXML
ファイルを別のコンピューターまたは別のユーザーで使用することはできません。
この例では、資格情報が格納されているファイルは TestScript.ps1.credential
で表されます。 TestScript を、資格情報を読み込むスクリプトの名前に置き換えます。
パイプラインの下に資格情報オブジェクトを送信して Export-Clixml
し、最初のコマンドで指定したパス ( $Credxmlpath
) に保存します。
資格情報をスクリプトに自動的にインポートするには、最後の 2 つのコマンドを実行します。 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 |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-IncludeTotalCount
データ セット内のオブジェクトの合計数を報告し、その後に選択したオブジェクトを報告します。 コマンドレットが合計カウントを特定できない場合は、 Unknown の合計数が表示されます。 整数には、合計カウント値の信頼性を示す Accuracy プロパティがあります。 Accuracyの値は、0.0
から1.0
までの範囲です。0.0
は、コマンドレットがオブジェクトをカウントできなかったことを意味1.0
、カウントが正確であることを意味し、0.0
と1.0
の間の値は、信頼性の高い推定値を示します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-LiteralPath
XML ファイルへのパスを指定します。 Path とは異なり、LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
型: | String[] |
Aliases: | PSPath |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Path
XML ファイルへのパスを指定します。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Skip
指定された数のオブジェクトを無視してから、残りのオブジェクトを取得します。 スキップするオブジェクトの数を入力します。
型: | UInt64 |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
このコマンドレットへのパスを含む文字列をパイプ処理できます。
出力
このコマンドレットは、格納されている XML ファイルから逆シリアル化されたオブジェクトを返します。
メモ
パラメーターの複数の値を指定する場合は、コンマを使用して値を区切ります。 たとえば、<parameter-name> <value1>, <value2>
のようにします。
関連リンク
PowerShell