ConvertTo-Csv
.NET オブジェクトを一連の文字区切り値 (CSV) 文字列に変換します。
構文
ConvertTo-Csv
[-InputObject] <psobject>
[[-Delimiter] <char>]
[-NoTypeInformation]
[<CommonParameters>]
ConvertTo-Csv
[-InputObject] <psobject>
[-UseCulture]
[-NoTypeInformation]
[<CommonParameters>]
説明
コマンドレットは ConvertTo-CSV
、送信するオブジェクトを表す一連の文字区切り値 (CSV) 文字列を返します。 その後、コマンドレットを ConvertFrom-Csv
使用して、CSV 文字列からオブジェクトを再作成できます。 CSV から変換されるオブジェクトは、プロパティ値を含み、メソッドを含まない元のオブジェクトの文字列値です。
コマンドレットを Export-Csv
使用して、オブジェクトを CSV 文字列に変換できます。 Export-CSV
は、CSV 文字列を ConvertTo-CSV
ファイルに保存する点を除いて、次のようになります。
ConvertTo-CSV
コマンドレットには、コンマ以外の区切り記号を指定したり、現在のカルチャを区切り記号として使用したりするパラメーターがあります。
例
例 1: オブジェクトを CSV に変換する
次の使用例は、 Process オブジェクトを CSV 文字列に変換します。
Get-Process -Name 'PowerShell' | ConvertTo-Csv -NoTypeInformation
"Name","SI","Handles","VM","WS","PM","NPM","Path","Company","CPU","FileVersion", ...
"powershell","11","691","2204036739072","175943680","132665344","33312", ...
コマンドレットは Get-Process
Process オブジェクトを取得し、Name パラメーターを使用して PowerShell プロセスを指定します。 プロセス オブジェクトは、パイプラインからコマンドレットに ConvertTo-CSV
送信されます。 コマンドレットは ConvertTo-CSV
、オブジェクトを CSV 文字列に変換します。 NoTypeInformation パラメーターは、csv 出力から #TYPE 情報ヘッダーを削除します。
例 2: DateTime オブジェクトを CSV に変換する
次の使用例は、 DateTime オブジェクトを CSV 文字列に変換します。
$Date = Get-Date
ConvertTo-Csv -InputObject $Date -Delimiter ';' -NoTypeInformation
"DisplayHint";"DateTime";"Date";"Day";"DayOfWeek";"DayOfYear";"Hour";"Kind";"Millisecond";"Minute";"Month";"Second";"Ticks";"TimeOfDay";"Year"
"DateTime";"Friday, January 4, 2019 14:40:51";"1/4/2019 00:00:00";"4";"Friday";"4";"14";"Local";"711";"40";"1";"51";"636822096517114991";"14:40:51.7114991";"2019"
コマンドレットは Get-Date
DateTime オブジェクトを取得し、変数に$Date
保存します。 このコマンドレットはConvertTo-Csv
、DateTime オブジェクトを文字列に変換します。 InputObject パラメーターは、変数に格納されている DateTime オブジェクトを$Date
使用します。 Delimiter パラメーターは、文字列値を区切るセミコロンを指定します。 NoTypeInformation パラメーターは、csv 出力から #TYPE 情報ヘッダーを削除します。
例 3: PowerShell イベント ログを CSV に変換する
この例では、PowerShell の Windows イベント ログを一連の CSV 文字列に変換します。
(Get-Culture).TextInfo.ListSeparator
Get-WinEvent -LogName 'Windows PowerShell' | ConvertTo-Csv -UseCulture -NoTypeInformation
,
"Message","Id","Version","Qualifiers","Level","Task","Opcode","Keywords","RecordId", ...
"Error Message = System error","403",,"0","4","4",,"36028797018963968","46891","PowerShell", ...
このコマンドレットは Get-Culture
、入れ子になったプロパティ TextInfo と ListSeparator を使用し、現在のカルチャの既定のリスト区切り記号を表示します。 コマンドレットはGet-WinEvent
イベント ログ オブジェクトを取得し、LogName パラメーターを使用してログ ファイル名を指定します。 イベント ログ オブジェクトは、パイプラインからコマンドレットに ConvertTo-Csv
送信されます。 このコマンドレットは ConvertTo-Csv
、イベント ログ オブジェクトを一連の CSV 文字列に変換します。 UseCulture パラメーターは、現在のカルチャの既定のリスト区切り記号を区切り記号として使用します。 NoTypeInformation パラメーターは、csv 出力から #TYPE 情報ヘッダーを削除します。
パラメーター
-Delimiter
CSV 文字列内のプロパティ値を区切る区切り記号を指定します。 既定値はコンマ (,
) です。 コロン (:
) などの文字を入力します。 セミコロン (;
) を指定するには、単一引用符で囲みます。
Type: | Char |
Position: | 1 |
Default value: | comma (,) |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
CSV 文字列に変換されるオブジェクトを指定します。 オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。 オブジェクトをパイプ処理することもできます ConvertTo-CSV
。
Type: | PSObject |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoTypeInformation
#TYPE 情報ヘッダーを出力から削除します。 このパラメーターは PowerShell 6.0 の既定値となり、下位互換性のために含まれています。
Type: | SwitchParameter |
Aliases: | NTI |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseCulture
現在のカルチャのリスト区切り記号を項目区切り記号として使用します。 カルチャのリスト区切り記号を検索するには、次のコマンドを使用します (Get-Culture).TextInfo.ListSeparator
。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
拡張型システム (ETS) アダプターを持つ任意のオブジェクトをこのコマンドレットにパイプできます。
出力
このコマンドレットは、変換された各オブジェクトを表す 1 つ以上の文字列を返します。
メモ
CSV 形式では、各オブジェクトはプロパティ値の文字区切りのリストで表されます。 プロパティ値は、オブジェクト の ToString() メソッドを使用して文字列に変換されます。 文字列はプロパティ値の名前で表されます。 ConvertTo-CSV
では、オブジェクトのメソッドはエクスポートされません。
CSV 文字列は次のように出力されます。
- 既定では、最初の文字列には、#TYPE 情報ヘッダーの後にオブジェクト型の完全修飾名が続きます。 たとえば、 System.Diagnostics.Process #TYPE します。
- NoTypeInformation を使用する場合、最初の文字列には列ヘッダーが含まれます。 ヘッダーには、最初のオブジェクトのプロパティ名がコンマ区切りリストとして含まれています。
- 再メイン文字列には、各オブジェクトのプロパティ値のコンマ区切りのリストが含まれています。
複数のオブジェクトを ConvertTo-CSV
送信する場合は、 ConvertTo-CSV
最初に送信したオブジェクトのプロパティに基づいて文字列を並べ替えます。 再メインオブジェクトに指定されたプロパティのいずれかが含まれていない場合、そのオブジェクトのプロパティ値は Null になります(連続する 2 つのコンマで表されます)。 残りのオブジェクトに追加のプロパティがある場合、これらのプロパティ値は無視されます。
関連リンク
PowerShell