Import-CSV
コンマ区切り値 (CSV) ファイルのオブジェクト プロパティを元のオブジェクトの CSV バージョンに変換します。
構文
Import-CSV [[-Delimiter] <char>] [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
Import-CSV -UseCulture [-Path] <string[]> [-Header <string[]>] [<CommonParameters>]
説明
Import-CSV コマンドレットは、Export-CSV コマンドレットにより生成される CSV の可変長ファイルからオブジェクトを作成します。
Import-CSV コマンドレットのパラメーターを使用して、結果のオブジェクトのプロパティ名を指定する列ヘッダー行の指定、項目の区切り文字の指定、および現在のカルチャの区切り記号を項目の区切り文字として使用するよう Import-CSV への指示を行うことができます。
Import-CSV により作成されるオブジェクトは、元のオブジェクトの CSV バージョンです。CSV オブジェクトのプロパティ値は、元のオブジェクトのプロパティ値の文字列バージョンです。オブジェクトの CSV バージョンにはメソッドがありません。
また、ConvertTo-CSV コマンドレットおよび ConvertFrom-CSV コマンドレットを使用して、オブジェクトを CSV 文字列に (またはその逆に) 変換することもできます。これらのコマンドレットは、Export-CSV コマンドレットおよび Import-CSV コマンドレットと同じですが、CSV 文字列をファイルに保存しない点が異なります。
パラメーター
-Delimiter <char>
CSV ファイルでプロパティ値を区切る区切り文字を指定します。既定値はコンマ (,) です。コロン (:) などの文字を入力します。セミコロン (;) を指定するには、それを引用符で囲みます。
ファイルの文字列に実際に使用される区切り文字以外の文字を指定した場合、Import-CSV は、CSV 文字列からオブジェクトを作成できません。代わりに、文字列が返されます。
必須 |
false |
位置 |
2 |
既定値 |
, |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Header <string[]>
インポートされたファイルに対して代替列ヘッダー行を指定します。列ヘッダーは、Import-CSV が作成するオブジェクトのプロパティの名前を指定します。
列ヘッダーのコンマ区切り一覧を入力します。各項目を引用符 (単一または二重) で囲みます。ヘッダー文字列は引用符で囲まないでください。存在している列よりも少ない数の列ヘッダーを入力した場合、残りの列にはヘッダーが表示されません。存在している列よりも多い数の列ヘッダーを入力した場合、余分なヘッダーは無視されます。
Header パラメーターを使用する場合、CSV ファイルから元のヘッダー行を削除します。使用しない場合は、Import-CSV がヘッダー行の項目から追加オブジェクトを作成します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Path <string[]>
インポートする CSV ファイルのパスを指定します。Import-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 パイプを使用してパスを含む文字列を Import-CSV に渡すことができます。 |
出力 |
オブジェクト。 Import-CSV は、CSV ファイルの内容により記述されるオブジェクトを返します。 |
注
インポートされたオブジェクトは CSV バージョンのオブジェクト型であるため、非 CSV バージョンのオブジェクト型を書式設定する Windows PowerShell の型書式設定エントリにより認識および書式設定されません。
CSV ファイルでは、各オブジェクトはオブジェクトのプロパティ値のコンマ区切り一覧で表されます。プロパティ値はオブジェクトの ToString() メソッドを使用して文字列に変換されるため、通常はプロパティ値の名前で表されます。Export-CSV はオブジェクトのメソッドをエクスポートしません。
例 1
C:\PS>get-process | export-csv processes.csv
C:\PS> $p = import-CSV processes.csv
C:\PS> $p | get-member
TypeName: CSV:System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Equals Method System.Boolean Equals(Object obj)
GetHashCode Method System.Int32 GetHashCode()
GetType Method System.Type GetType()
ToString Method System.String ToString()
BasePriority NoteProperty System.String BasePriority=8
Company NoteProperty System.String Company=Microsoft Corporation
...
C:\PS> $p | out-gridview
説明
-----------
この例では、Microsoft .NET Framework オブジェクトの CSV ファイルをエクスポートし、そのファイルをインポートする方法を示しています。
最初のコマンドは、Get-Process コマンドレットを使用してローカル コンピューター上のプロセスを取得します。また、パイプライン演算子 (|) を使用してプロセス オブジェクトを Export-CSV コマンドレットに送ります。このコマンドレットは、プロセス オブジェクトを現在のディレクトリにある Processes.csv ファイルにエクスポートします。
2 番目のコマンドは、Import-CSV コマンドレットを使用してプロセスを Import-CSV ファイルにインポートします。次に、結果のプロセス オブジェクトを $p 変数に保存します。
3 番目のコマンドは、パイプライン演算子 (|) を使用して、インポートされたオブジェクトを Get-Member コマンドレットに対してパイプ処理します。結果は、オブジェクトが、Get-Process により返される System.Diagnostic.Process オブジェクトではなく、CSV:System.Diagnostic.Process オブジェクトであることを示しています。
また、書式設定ファイルにはプロセス オブジェクトの CSV バージョンのエントリの種類が存在しないため、このようなオブジェクトは、標準的なプロセス オブジェクトの書式設定方法と同じ方法では書式設定されません。
オブジェクトを表示するには、Format-Table、Format-List などの書式設定コマンドレットを使用するか、Out-GridView に対してオブジェクトをパイプ処理します。
例 2
C:\PS>get-process | export-csv processes.csv -Delimiter :
C:\PS> $p = import-csv processes.csv -Delimiter :
説明
-----------
この例は、Import-CSV の Delimiter パラメーターを使用する方法を示しています。この例では、区切り文字としてコロン (:) を使用するファイルにプロセスがエクスポートされています。
プロセスをインポートする場合、Import-CSV ファイルは Delimiter パラメーターを使用してファイルで使用される区切り文字を示します。
例 3
C:\PS>$p = import-csv processes.csv -UseCulture
C:\PS> (get-culture).textinfo.listseparator
,
説明
-----------
この例は、Import-CSV の UseCulture パラメーターを使用する方法を示しています。
最初のコマンドは、Processes.csv ファイル内のオブジェクトを $p 変数にインポートします。また、UseCulture パラメーターを使用して、現在のカルチャについて定義されている区切り記号を使用するように Import-CSV に指示します。
2 番目のコマンドは、現在のカルチャの区切り記号を表示します。また、Get-Culture コマンドレットを使用して現在のカルチャを取得します。さらに、ドット (.) メソッドを使用して現在のカルチャの TextInfo プロパティと TextInfo 内のオブジェクトの ListSeparator プロパティを取得します。この例では、このコマンドはコンマを返します。
例 4
C:\PS>start-job -scriptblock { get-process } | export-csv jobs.csv
C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Finished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progress","Verbose","Debug","Warning","StateChanged"
# Delete header from file
C:\PS> $a = (get-content jobs.csv)
C:\PS> $a = $a[0], $a[2..($a.count - 1)]
C:\PS> $a > jobs.csv
C:\PS> $j = import-csv jobs.csv -header $header
C:\PS> $j
MoreData : True
StatusMessage :
Location : localhost
Command : get-process
State : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 135bdd25-40d6-4a20-bd68-05282a59abd6
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 :
説明
-----------
この例は、Import-CSV の Header パラメーターを使用して、結果としてインポートされるオブジェクトのプロパティ名を変更する方法を示しています。
最初のコマンドは Start-Job コマンドレットを使用して、ローカル コンピューター上で Get-Process コマンドを実行するバックグラウンド ジョブを開始します。パイプライン演算子 (|) によって、結果のジョブ オブジェクトは Export-CSV コマンドレットに送られます。このコマンドレットはジョブ オブジェクトを CSV 形式に変換します。代入演算子 (=) によって、結果の CSV が Jobs.csv ファイルに保存されます。
2 番目のコマンドは、ヘッダーを $header 変数に保存します。既定のヘッダーとは異なり、このヘッダーは "HasMoreData" の代わりに "MoreData" を使用し、"JobStateInfo" の代わりに "State" を使用します。
次の 3 つのコマンドは、Jobs.csv ファイルから元のヘッダー (2 行目) を削除します。
6 番目のコマンドは Import-CSV コマンドレットを使用して Jobs.csv ファイルをインポートし、CSV 文字列をジョブ オブジェクトの CSV バージョンに変換します。このコマンドは、Header パラメーターを使用して代替ヘッダーを送ります。結果は $j 変数に保存されます。
7 番目のコマンドは、$j 変数のオブジェクトを表示します。コマンドの出力に示されるように、結果のオブジェクトには "MoreData" プロパティと "State" プロパティがあります。
例 5
C:\PS>".\processes.csv" | import-csv
説明
-----------
このコマンドは、Processes.csv ファイルからオブジェクトをインポートします。