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.01.0の間の値は、信頼性の高い推定値を示します。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-LiteralPath

XML ファイルへのパスを指定します。 Path とは異なり、LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。

型:String[]
Aliases:PSPath, LP
配置:Named
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Path

XML ファイルへのパスを指定します。

型:String[]
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Skip

指定された数のオブジェクトを無視してから、残りのオブジェクトを取得します。 スキップするオブジェクトの数を入力します。

型:UInt64
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

String

このコマンドレットへのパスを含む文字列をパイプ処理できます。

出力

PSObject

このコマンドレットは、格納されている XML ファイルから逆シリアル化されたオブジェクトを返します。

メモ

パラメーターの複数の値を指定する場合は、コンマを使用して値を区切ります。 たとえば、<parameter-name> <value1>, <value2> のようにします。