次の方法で共有


ConvertTo-Csv

オブジェクトを一連のカンマ区切り値 (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-CSVConvertTo-CSVに似ていますが、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 パラメーターは、 変数に格納されている $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 文字列内のプロパティ値を区切る区切り記号を指定します。 既定値はコンマ (,) です。 コロン (:) などの文字を入力します。 セミコロン (;) を指定するには、単一引用符で囲みます。

型:Char
配置:1
規定値:comma (,)
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-InputObject

CSV 文字列に変換されるオブジェクトを指定します。 オブジェクトを含む変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。 オブジェクトを ConvertTo-CSVに送ることもできます。

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

-NoTypeInformation

#TYPE 情報ヘッダーを出力から削除します。 このパラメーターは PowerShell 6.0 の既定値となり、下位互換性のために含まれています。

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

-UseCulture

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

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

入力

PSObject

Extended Type System (ETS) アダプターを持つ任意のオブジェクトを ConvertTo-CSV にパイプ処理できます。

出力

String

CSV 出力は、文字列のコレクションとして返されます。

メモ

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

CSV 文字列は次のように出力されます。

  • 既定では、最初の文字列には、#TYPE 情報ヘッダーの後にオブジェクト型の完全修飾名が続きます。 #TYPE System.Diagnostics.Process などはその例です。
  • NoTypeInformation 使用する場合、最初の文字列には列ヘッダーが含まれます。 ヘッダーには、最初のオブジェクトのプロパティ名がコンマ区切りリストとして含まれています。
  • 残りの文字列には、各オブジェクトのプロパティ値のコンマ区切りのリストが含まれています。

複数のオブジェクトを ConvertTo-CSVに送信すると、ConvertTo-CSV は、最初に送信したオブジェクトのプロパティに基づいて文字列を並べ替えます。 残りのオブジェクトに指定されたプロパティの 1 つがない場合、そのオブジェクトのプロパティ値は Null で、連続する 2 つのコンマで表されます。 残りのオブジェクトに追加のプロパティがある場合、それらのプロパティ値は無視されます。