ConvertFrom-CSV

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

構文

ConvertFrom-CSV [[-Delimiter] <char>] [-InputObject] <PSObject[]> [-Header <string[]>] [<CommonParameters>]

ConvertFrom-CSV -UseCulture [-InputObject] <PSObject[]> [-Header <string[]>] [<CommonParameters>]

説明

ConvertFrom-CSV コマンドレットは、ConvertTo-CSV コマンドレットにより生成される CSV の可変長文字列からオブジェクトを作成します。

ConvertFrom-CSV コマンドレットのパラメーターを使用して、結果のオブジェクトのプロパティ名を決定する列ヘッダー行を指定するか、項目の区切り文字を指定するか、現在のカルチャの区切り記号を区切り文字として使用するよう ConvertFrom-CSV に指示することができます。

ConvertFrom-CSV により作成されるオブジェクトは、元のオブジェクトの CSV バージョンです。CSV オブジェクトのプロパティ値は、元のオブジェクトのプロパティ値の文字列バージョンです。オブジェクトの CSV バージョンにはメソッドがありません。

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

パラメーター

-Delimiter <char>

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

CSV 文字列で使用される区切り文字以外の文字を指定した場合、ConvertFrom-CSV は、CSV 文字列からオブジェクトを作成できません。代わりに、文字列が返されます。

必須

false

位置

2

既定値

','

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-Header <string[]>

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

列ヘッダーのコンマ区切り一覧を入力します。各項目を引用符 (単一または二重) で囲みます。ヘッダー文字列は引用符で囲まないでください。存在している列よりも少ない数の列ヘッダーを入力した場合、残りの列にはヘッダーが表示されません。存在している列よりも多い数の列ヘッダーを入力した場合、余分なヘッダーは無視されます。

Header パラメーターを使用する場合、CSV 文字列から列ヘッダー文字列を省略します。使用しない場合は、ConvertFrom-CSV がヘッダー行の項目から追加オブジェクトを作成します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-InputObject <PSObject[]>

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

必須

true

位置

1

既定値

パイプライン入力を許可する

true (ByValue, ByPropertyName)

ワイルドカード文字を許可する

false

-UseCulture

現在のカルチャの区切り記号を文字列の区切り文字として使用します。既定値はコンマ (,) です。

カルチャの区切り記号を検索するには、(Get-Culture).TextInfo.ListSeparator コマンドを使用します。CSV 文字列で使用される区切り文字以外の文字を指定した場合、ConvertFrom-CSV は、CSV 文字列からオブジェクトを作成できません。代わりに、文字列が返されます。

必須

true

位置

named

既定値

Comma

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

<CommonParameters>

このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.

入力と出力

入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。

入力

System.String

パイプを使用して CSV 文字列を ConvertFrom-CSV に渡すことができます。

出力

System.Management.Automation.PSObject

ConvertFrom-CSV は、CSV 文字列のプロパティにより記述されるオブジェクトを返します。

インポートされたオブジェクトは CSV バージョンのオブジェクト型であるため、非 CSV バージョンのオブジェクト型を書式設定する Windows PowerShell の型書式設定エントリにより認識および書式設定されません。

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

例 1

C:\PS>$p = get-process | convertto-csv

C:\PS> $p | convertfrom-csv

説明
-----------
これらのコマンドは、ローカル コンピューターのプロセスを CSV 形式に変換し、その後、オブジェクト形式に復元します。

最初のコマンドは、Get-Process コマンドレットを使用してローカル コンピューターのプロセスを取得します。これらのプロセスはパイプライン演算子 (|) により ConvertTo-CSV コマンドレットに送られ、プロセス オブジェクトが CSV 形式に変換されます。CSV 文字列は $p 変数に保存されます。

2 番目のコマンドは、パイプライン演算子を使用して $p 変数の CSV 文字列を ConvertFrom-CSV コマンドレットに送信します。コマンドレットは、CSV 文字列を元の CSV バージョンのプロセス オブジェクトに変換します。





例 2

C:\PS>$date = get-date | convertto-csv -delimiter ";"

C:\PS> convertfrom-csv -inputobject $date -delimiter ";"

説明
-----------
これらのコマンドは、日付オブジェクトを CSV 形式に変換し、その後、CSV オブジェクト形式に変換します。

最初のコマンドは、Get-Date コマンドレットを使用して現在の日付と時刻を取得します。データはパイプライン演算子 (|) によって ConvertTo-CSV コマンドレットに送られ、日付オブジェクトが一連の CSV 文字列に変換されます。このコマンドは、Delimiter パラメーターを使用してセミコロンの区切り文字を指定します。文字列は $date 変数に保存されます。

2 番目のコマンドは、ConvertFrom-CSV コマンドレットを使用して、$date 変数の CSV 文字列をオブジェクト形式に戻します。このコマンドは InputObject パラメーターを使用して CSV 文字列を指定し、Delimiter パラメーターを使用してセミコロンの区切り文字を指定します。





例 3

C:\PS>$j = start-job -scriptblock { get-process } | convertto-csv

C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged"

# Delete header from $j
C:\PS> $j = $j[0], $j[2..($j.count - 1)]

$j | convertfrom-csv -header $header

MoreData      : True
StatusMessage : 
Location      : localhost
Command       : get-process
State         : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : 6fcb6578-7f42-4d93-9f23-9937f6aac1a2
SessionId     : 1
Name          : Job1
ChildJobs     : System.Collections.Generic.List`1[System.Management.Automation.Job]
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.String]
Debug         : System.Management.Automation.PSDataCollection`1[System.String]
Warning       : System.Management.Automation.PSDataCollection`1[System.String]
StateChanged  :

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

最初のコマンドは Start-Job コマンドレットを使用して、ローカル コンピューター上で Get-Process コマンドを実行するバックグラウンド ジョブを開始します。パイプライン演算子 (|) によって、結果のジョブ オブジェクトは ConvertTo-CSV コマンドレットに送られます。このコマンドレットはジョブ オブジェクトを CSV 形式に変換します。代入演算子 (=) によって結果の CSV が $j 変数に保存されます。

2 番目のコマンドは、ヘッダーを $header 変数に保存します。既定のヘッダーとは異なり、このヘッダーは "HasMoreData" の代わりに "MoreData" を使用し、"JobStateInfo" の代わりに "State" を使用します。

3 番目のコマンドは、CSV 文字列から元のヘッダー (2 行目) を削除し、$j 変数に返します。

4 番目のコマンドは、ConvertFrom-CSV コマンドレットを使用して、CSV 文字列をジョブ オブジェクトの CSV バージョンに変換します。このコマンドは、パイプライン演算子を使用して $j の内容を ConvertFrom-CSV に渡します。ヘッダーにより指定されたように、結果のオブジェクトは "MoreData" プロパティと "State" プロパティを持ちます。





例 4

C:\PS>(get-culture).textinfo.listseparator

C:\PS> ConvertFrom-Csv -inputobject $services -UseCulture

説明
-----------
このコマンドは、ConvertFrom-CSV コマンドレットを使用して、ConvertTo-CSV コマンドレットにより変換されたサービス オブジェクトの CSV 文字列を変換します。また、UseCulture パラメーターを使用して、現在のカルチャの区切り文字 (リスト セパレーター) を使用するように ConvertFrom-CSV に指示します。

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

この例では、ConvertFrom-CSV コマンドを使用する前に、リスト セパレーターを検証するために Get-Culture コマンドが使用されています。





関連項目

概念

ConvertTo-CSV
Export-CSV
Import-CSV