ConvertFrom-Csv
カンマ区切り値 (CSV) 形式のオブジェクト プロパティを、元のオブジェクトの CSV バージョンに変換します。
構文
ConvertFrom-Csv
[-InputObject] <psobject[]>
[[-Delimiter] <char>]
[-Header <string[]>]
[<CommonParameters>]
ConvertFrom-Csv
[-InputObject] <psobject[]>
-UseCulture
[-Header <string[]>]
[<CommonParameters>]
説明
ConvertFrom-Csv
コマンドレットは、ConvertTo-Csv
コマンドレットによって生成された CSV 可変長文字列からオブジェクトを作成します。
このコマンドレットのパラメーターを使用して、結果のオブジェクトのプロパティ名を決定する列ヘッダー行を指定したり、項目の区切り記号を指定したり、現在のカルチャのリスト区切り記号を区切り記号として使用するようにこのコマンドレットに指示したりできます。
ConvertFrom-Csv
が作成するオブジェクトは、元のオブジェクトの CSV バージョンです。 CSV オブジェクトのプロパティ値は、元のオブジェクトのプロパティ値の文字列バージョンです。 オブジェクトの CSV バージョンにはメソッドがありません。
また、 Export-Csv
コマンドレットと Import-Csv
コマンドレットを使用して、ファイルを CSV 文字列に変換したり、その逆を行ったりすることもできます。 これらのコマンドレットは、CSV 文字列をファイルに保存する点を除き、ConvertTo-Csv
および ConvertFrom-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 Core では省略可能です。
$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 文字列からオブジェクトを生成できません。
パラメーター
-Delimiter
CSV 文字列内のプロパティ値を区切る区切り記号を指定します。 デフォルトはコンマ (,) です。
コロン (:) などの文字を入力します。 セミコロン (;) を指定するには、一重引用符で囲みます。
ファイル内の実際の文字列区切り文字以外の文字を指定すると、 ConvertFrom-Csv
は CSV 文字列からオブジェクトを作成できず、CSV 文字列を返します。
型: | Char |
配置: | 1 |
規定値: | comma (,) |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Header
インポートされた文字列の代替列ヘッダー行を指定します。 列ヘッダーは、ConvertFrom-Csv
によって作成されたオブジェクトのプロパティ名を決定します。
列ヘッダーはコンマ区切りリストとして入力します。 ヘッダー文字列を引用符で囲まないでください。 各列ヘッダーを単一引用符で囲みます。
データ列よりも少ない列ヘッダーを入力すると、残りのデータ列は破棄されます。 データ列よりも多くの列ヘッダーを入力すると、空のデータ列で追加の列ヘッダーが作成されます。
Header パラメーターを使用する場合は、CSV 文字列から列ヘッダー文字列を省略します。 それ以外の場合、このコマンドレットはヘッダー行の項目から追加のオブジェクトを作成します。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
オブジェクトに変換する CSV 文字列を指定します。 CSV 文字列を含む変数を入力するか、CSV 文字列を取得するコマンドまたは式を入力します。 CSV 文字列をパイプ処理して ConvertFrom-Csv
することもできます。
型: | PSObject[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-UseCulture
現在のカルチャのリスト区切り記号を項目区切り記号として使用します。 カルチャのリスト区切り記号を検索するには、次のコマンドを使用します: (Get-Culture).TextInfo.ListSeparator
。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
CSV 文字列をこのコマンドレットにパイプできます。
出力
このコマンドレットは、CSV 文字列のプロパティによって記述されたオブジェクトを返します。
メモ
インポートされたオブジェクトはオブジェクトの種類が CSV バージョンであるため、オブジェクトの種類を CSV 以外のバージョンを書式設定する PowerShell の種類の書式設定エントリでは認識されず、書式設定されません。
CSV 形式では、各オブジェクトはオブジェクトのプロパティ値のコンマ区切りリストで表されます。 プロパティ値は (オブジェクトの ToString() メソッドを使用して) 文字列に変換されるため、プロパティ値の名前で表されます。 このコマンドレットでは、オブジェクトのメソッドはエクスポートされません。