ConvertFrom-Csv
文字区切り値 (CSV) 形式のオブジェクト プロパティを元のオブジェクトの CSV バージョンに変換します。
構文
Delimiter (既定)
ConvertFrom-Csv
[[-Delimiter] <Char>]
[-InputObject] <PSObject[]>
[-Header <String[]>]
[<CommonParameters>]
UseCulture
ConvertFrom-Csv
[-InputObject] <PSObject[]>
-UseCulture
[-Header <String[]>]
[<CommonParameters>]
説明
ConvertFrom-Csv コマンドレットは、文字区切り値 (CSV) データを CSV データ行ごとに PSObject 型オブジェクト 変換します。 新しいオブジェクトは、CSV データから読み取られた順序でパイプラインに書き込まれます。 CSV の列ヘッダー行の値は、PSObject の新しい各に追加されるプロパティの名前になります。
作成 ConvertFrom-Csv オブジェクトは、CSV ファイル内の各行の PSObject 型オブジェクト されます。 CSV オブジェクトのプロパティ値は、元のオブジェクトのプロパティ値の文字列バージョンです。 CSV バージョンのオブジェクトにはメソッドがありません。
Export-Csv コマンドレットと Import-Csv コマンドレットを使用して、オブジェクトをファイル内の CSV 文字列に変換して戻すこともできます。 これらのコマンドレットは、CSV 文字列をファイルに保存する点を除き、ConvertTo-Csv および ConvertFrom-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 コマンドレットは、日付オブジェクトを一連の CSV 文字列に変換します。
区切り記号 パラメーターは、セミコロン区切り記号を指定するために使用されます。 文字列は $Date 変数に保存されます。
例 3: ヘッダー パラメーターを使用してプロパティの名前を変更する
この例では、 の 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 以降では省略可能です。
$Header 変数には、次の既定値を置き換えるカスタム ヘッダーが含まれています。 HasMoreData、JobStateInfo、PSBeginTime、PSEndTime、および PSJobTypeName。
$J 変数には CSV 文字列が含まれており、既定のヘッダーを削除するために使用されます。
ConvertFrom-Csv コマンドレットは、CSV 文字列を PSCustomObject に変換し、Header パラメーターを使用して $Header 変数を適用します。
例 4: サービス オブジェクトの CSV 文字列を変換する
この例では、ConvertFrom-Csv パラメーターで コマンドレットを使用する方法を示します。
(Get-Culture).TextInfo.ListSeparator
$Services = (Get-Service | ConvertTo-Csv)
ConvertFrom-Csv -InputObject $Services -UseCulture
Get-Culture コマンドレットは、TextInfo と ListSeparator 入れ子になったプロパティを使用して、現在のカルチャの既定のリスト区切り記号を取得します。
Get-Service コマンドレットは、サービス オブジェクトをパイプラインから ConvertTo-Csvに送信します。
ConvertTo-Csv は、サービス オブジェクトを一連の CSV 文字列に変換します。 CSV 文字列は、$Services 変数に格納されます。
ConvertFrom-Csv コマンドレットは、InputObject パラメーターを使用し、csv 文字列を $Services 変数から変換します。
UseCulture パラメーターは、現在のカルチャの既定のリスト区切り記号を使用します。
UseCulture パラメーターを使用する場合は、現在のカルチャの既定のリスト区切り記号が、CSV 文字列で使用されている区切り記号と一致していることを確認してください。 それ以外の場合、ConvertFrom-Csv は CSV 文字列からオブジェクトを生成できません。
例 5: W3C 拡張ログ形式で CSV データを変換する
この例では、W3C 拡張ログ形式の CSV データをオブジェクトに変換する方法を示します。
$logData = @"
#Version: 1.0
#Date: 12-Jan-1996 00:00:00
#Fields: time,cs-method,cs-uri
00:34:23,GET,/foo/bar.html
12:21:16,GET,/foo/bar.html
12:45:52,GET,/foo/bar.html
12:57:34,GET,/foo/bar.html
"@
ConvertFrom-Csv $logData
time cs-method cs-uri
---- --------- ------
00:34:23 GET /foo/bar.html
12:21:16 GET /foo/bar.html
12:45:52 GET /foo/bar.html
12:57:34 GET /foo/bar.html
パラメーター
-Delimiter
CSV 文字列内のプロパティ値を区切る区切り記号を指定します。 既定値はコンマ (,) です。 コロン (:) などの文字を入力します。 セミコロン (;) を指定するには、単一引用符で囲みます。
ファイルに実際の文字列区切り記号以外の文字を指定 ConvertFrom-Csv、CSV 文字列からオブジェクトを作成して CSV 文字列を返すことはできません。
パラメーターのプロパティ
| 型: | Char |
| 規定値: | comma (,) |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
Delimiter
| 配置: | 1 |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Header
インポートされた文字列の代替列ヘッダー行を指定します。 列ヘッダーは、ConvertFrom-Csvによって作成されたオブジェクトのプロパティ名を決定します。
列ヘッダーを文字区切りリストとして入力します。 ヘッダー文字列を引用符で囲まないでください。 各列ヘッダーを単一引用符で囲みます。
データ列よりも少ない列ヘッダーを入力すると、残りのデータ列は破棄されます。 データ列よりも多くの列ヘッダーを入力すると、空のデータ列で追加の列ヘッダーが作成されます。
Header パラメーターを使用する場合は、CSV 文字列から列ヘッダー文字列を省略します。 それ以外の場合、このコマンドレットはヘッダー行の項目から追加のオブジェクトを作成します。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-InputObject
オブジェクトに変換する CSV 文字列を指定します。 CSV 文字列を含む変数を入力するか、CSV 文字列を取得するコマンドまたは式を入力します。 CSV 文字列をパイプ処理して ConvertFrom-Csvすることもできます。
パラメーターのプロパティ
| 型: | PSObject[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-UseCulture
現在のカルチャのリスト区切り記号を項目区切り記号として使用します。 カルチャのリスト区切り記号を検索するには、次のコマンドを使用します: (Get-Culture).TextInfo.ListSeparator。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
UseCulture
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
String
CSV 文字列をこのコマンドレットにパイプできます。
出力
PSObject
このコマンドレットは、CSV 文字列のプロパティによって記述されたオブジェクトを返します。
メモ
CSV 形式では、各オブジェクトは、オブジェクトのプロパティ値の文字区切りのリストで表されます。 プロパティ値は、オブジェクトの ToString() メソッドを使用して文字列に変換されます。 オブジェクトのメソッドをエクスポートする方法はありません。
ConvertFrom-Csv W3C 拡張ログ形式もサポートしています。 ハッシュ文字 (#) で始まる行はコメントとして扱われ、コメントが #Fields: で始まり、列名のコンマ区切りのリストが含まれている場合を除き、無視されます。 その場合、コマンドレットはこれらの列名を使用します。 これは、Windows IIS およびその他の Web サーバー ログの標準形式です。 詳細については、「拡張ログ ファイル形式 」を参照してください。