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 は、セキュリティで保護された XML としてエクスポートされた資格情報とセキュリティで保護された文字列を Export-Clixmlインポートすることです。 例 2 は、セキュリティで保護された資格情報オブジェクトを Import-Clixml インポートする方法を示しています。

CLIXML データは PowerShell オブジェクトに逆シリアル化されます。 ただし、逆シリアル化されたオブジェクトはライブ オブジェクトではありません。 これらは、シリアル化時のオブジェクトのスナップショットです。 逆シリアル化されたオブジェクトにはプロパティが含まれますが、メソッドは含まれていません。

TypeNames プロパティには、プレフィックスが付いた元の型名がDeserialized含まれています。 例 3 は、 逆シリアル化されたオブジェクトの TypeNames プロパティを示しています。

Import-Clixml では、バイトオーダー マーク (BOM) を使用してファイルのエンコード形式を検出します。 ファイルに BOM がない場合は、エンコードが UTF8 であると見なされます。

CLI の詳細については、「言語の独立」を参照してください

例 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

指定された数のオブジェクトのみを取得します。 取得するオブジェクトの数を入力します。

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeTotalCount

データ セット内のオブジェクトの合計数を報告し、その後に選択したオブジェクトを報告します。 コマンドレットが合計カウントを特定できない場合は、不明な合計カウント表示されます。 整数には、 合計カウント値の信頼性を示す Accuracy プロパティがあります。 Accuracy の値の範囲1.00.00.0は、コマンドレットがオブジェクトをカウントできなかったことを意味し、1.0カウントが正確であることを意味し、その間0.0の値と1.0信頼性の高い推定値を示します。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

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

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

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

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Skip

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

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

String

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

出力

PSObject

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

メモ

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