次の方法で共有


ConvertFrom-Csv

文字区切り値 (CSV) 形式のオブジェクト プロパティを、元のオブジェクトの CSV バージョンに変換します。

構文

ConvertFrom-Csv
                [[-Delimiter] <Char>]
                [-InputObject] <PSObject[]>
                [-Header <String[]>]
                [<CommonParameters>]
ConvertFrom-Csv
                -UseCulture
                [-InputObject] <PSObject[]>
                [-Header <String[]>]
                [<CommonParameters>]

説明

コマンドレットは ConvertFrom-Csv 、CSV データの行ごとに文字区切り値 (CSV) データを PSObject 型オブジェクトに変換します。 新しいオブジェクトは、CSV データから読み取られた順序でパイプラインに書き込まれます。 CSV の列ヘッダー行の値は、新しい 各 PSObject に追加されるプロパティの名前になります。

作成する ConvertFrom-Csv オブジェクトは、CSV ファイル内の各行の PSObject 型オブジェクトです。 CSV オブジェクトのプロパティ値は、元のオブジェクトのプロパティ値の文字列バージョンです。 オブジェクトの CSV バージョンにはメソッドがありません。

および Import-Csv コマンドレットをExport-Csv使用して、オブジェクトをファイル内の CSV 文字列に変換して戻すこともできます。 これらのコマンドレットは、 および コマンドレットとConvertFrom-Csv同じですConvertTo-Csvが、CSV 文字列をファイルに保存する点が除きます。

PSObject 型は、プロパティの順序を列ヘッダーの順序で保持します。 つまり、オブジェクトを CSV 形式に変換すると、同じ列の順序が取得されます。

例 1: ローカル コンピューター上のプロセスを CSV 形式に変換する

この例では、ローカル コンピューター上のプロセスを CSV 形式に変換し、オブジェクト 形式に復元する方法を示します。

$P = Get-Process | ConvertTo-Csv
$P | ConvertFrom-Csv

コマンドレットは Get-Process 、パイプラインから にプロセスを ConvertTo-Csv送信します。 コマンドレットは ConvertTo-Csv 、プロセス オブジェクトを一連の CSV 文字列に変換します。 コマンドレットは ConvertFrom-Csv 、CSV 文字列を元のプロセス オブジェクトの CSV バージョンに変換します。 CSV 文字列は 変数に $P 保存されます。

例 2: データ オブジェクトを CSV 形式に変換し、次に CSV オブジェクト形式に変換する

この例では、データ オブジェクトを CSV 形式に変換し、次に CSV オブジェクト形式に変換する方法を示します。

$Date = Get-Date | ConvertTo-Csv -Delimiter ';'
ConvertFrom-Csv -InputObject $Date -Delimiter ';'

最初のコマンドでは、 を使用 Get-Date してパイプラインの現在の日付と時刻を に ConvertTo-Csv送信します。 コマンドレットは ConvertTo-Csv 、date オブジェクトを一連の CSV 文字列に変換します。 Delimiter パラメーターは、セミコロン区切り記号を指定するために使用されます。 文字列は 変数に $Date 保存されます。

例 3: ヘッダー パラメーターを使用してプロパティの名前を変更する

この例では、 の Header パラメーター ConvertFrom-Csv を使用して、結果としてインポートされるオブジェクトのプロパティの名前を変更する方法を示します。

$J = Start-Job -ScriptBlock { Get-Process } | ConvertTo-Csv  -NoTypeInformation
$Header = 'State', 'MoreData', 'StatusMessage', 'Location', 'Command',
          'StateInfo', 'Finished', 'InstanceId', 'Id', 'Name', 'ChildJobs',
          'BeginTime', 'EndTime', 'JobType', 'Output', 'Error', 'Progress',
          'Verbose', 'Debug', 'Warning', 'Information'
# Delete the default header from $J
$J = $J[1..($J.count - 1)]
$J | ConvertFrom-Csv -Header $Header

State         : Running
MoreData      : True
StatusMessage :
Location      : localhost
Command       : Get-Process
StateInfo     : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : a259eb63-6824-4b97-a033-305108ae1c2e
Id            : 1
Name          : Job1
ChildJobs     : System.Collections.Generic.List`1[System.Management.Automation.Job]
BeginTime     : 12/20/2018 18:59:57
EndTime       :
JobType       : BackgroundJob
Output        : System.Management.Automation.PSDataCollection`1[System.Management.Automation.PSObject]
Error         : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ErrorRecord]
Progress      : System.Management.Automation.PSDataCollection`1[System.Management.Automation.ProgressRecord]
Verbose       : System.Management.Automation.PSDataCollection`1[System.Management.Automation.VerboseRecord]
Debug         : System.Management.Automation.PSDataCollection`1[System.Management.Automation.DebugRecord]
Warning       : System.Management.Automation.PSDataCollection`1[System.Management.Automation.WarningRecord]
Information   : System.Management.Automation.PSDataCollection`1[System.Management.Automation.InformationRecord]

コマンドレットは Start-Job 、 を実行 Get-Processするバックグラウンド ジョブを開始します。 ジョブ オブジェクトは、パイプラインからに ConvertTo-Csv 送信され、CSV 文字列に変換されます。 NoTypeInformation パラメーターは、CSV 出力から型情報ヘッダーを削除し、PowerShell v6 以降では省略可能です。 変数には $HeaderHasMoreDataJobStateInfoPSBeginTimePSEndTimePSJobTypeName の既定値を置き換えるカスタム ヘッダーが含まれています。 変数には $J CSV 文字列が含まれており、既定のヘッダーを削除するために使用されます。 コマンドレットは ConvertFrom-Csv CSV 文字列を PSCustomObject に変換し、 Header パラメーターを使用して変数を $Header 適用します。

例 4: サービス オブジェクトの CSV 文字列を変換する

この例では、UseCulture パラメーターで コマンドレットをConvertFrom-Csv使用する方法を示します。

(Get-Culture).TextInfo.ListSeparator
$Services = (Get-Service | ConvertTo-Csv)
ConvertFrom-Csv -InputObject $Services -UseCulture

コマンドレットは Get-Culture 、入れ子になったプロパティ TextInfoListSeparator を使用して、現在のカルチャの既定のリスト区切り記号を取得します。 コマンドレットは Get-Service 、パイプラインの下にサービス オブジェクトを に ConvertTo-Csv送信します。 は ConvertTo-Csv 、サービス オブジェクトを一連の CSV 文字列に変換します。 CSV 文字列は 変数に $Services 格納されます。 コマンドレットは ConvertFrom-CsvInputObject パラメーターを使用し、変数から CSV 文字列を $Services 変換します。 UseCulture パラメーターは、現在のカルチャの既定のリスト区切り記号を使用します。

UseCulture パラメーターを使用する場合は、現在のカルチャの既定のリスト区切り記号が CSV 文字列で使用されている区切り記号と一致していることを確認してください。 それ以外の場合は、 ConvertFrom-Csv CSV 文字列からオブジェクトを生成できません。

パラメーター

-Delimiter

CSV 文字列内のプロパティ値を区切る区切り記号を指定します。 既定値はコンマ (,) です。 コロン (:) などの文字を入力します。 セミコロン (;) を指定するには、単一引用符で囲みます。

ファイルで実際の文字列区切り記号以外の文字を指定した場合、 ConvertFrom-Csv CSV 文字列からオブジェクトを作成して CSV 文字列を返すことはできません。

Type:Char
Position:1
Default value:comma (,)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Header

インポートされた文字列の代替列ヘッダー行を指定します。 列ヘッダーは、 によって作成されたオブジェクトのプロパティ名を ConvertFrom-Csv決定します。

列ヘッダーを文字区切りリストとして入力します。 ヘッダー文字列を引用符で囲まないでください。 各列ヘッダーを単一引用符で囲みます。

データ列よりも少ない列ヘッダーを入力すると、残りのデータ列は破棄されます。 データ列よりも多くの列ヘッダーを入力すると、空のデータ列で追加の列ヘッダーが作成されます。

Header パラメーターを使用する場合は、CSV 文字列から列ヘッダー文字列を省略します。 それ以外の場合、このコマンドレットはヘッダー行の項目から追加のオブジェクトを作成します。

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

-InputObject

オブジェクトに変換する CSV 文字列を指定します。 CSV 文字列が格納されている変数を入力するか、CSV 文字列を取得するコマンドまたは式を入力します。 CSV 文字列を に ConvertFrom-Csvパイプすることもできます。

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

-UseCulture

現在のカルチャのリスト区切り記号を項目区切り記号として使用します。 カルチャのリスト区切り記号を見つけるには、次のコマンドを使用します。 (Get-Culture).TextInfo.ListSeparator

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

入力

String

CSV 文字列をこのコマンドレットにパイプできます。

出力

PSObject

このコマンドレットは、CSV 文字列のプロパティによって記述されたオブジェクトを返します。

メモ

CSV 形式では、各オブジェクトは、オブジェクトのプロパティ値の文字区切りのリストで表されます。 プロパティ値は、 オブジェクトの メソッドを使用して ToString() 文字列に変換されます。 オブジェクトのメソッドをエクスポートする方法はありません。