PowerShell Cmdlet - Import-CSV
 記事記号:[mg1906] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    Import-CSV
    
概要
    コンマ区切り値 (CSV) ファイルのオブジェクト プロパティを元のオブジェクトの C
    SV バージョンに変換します。
    
構文
    Import-CSV [[-Delimiter] <char>] [-Path] <string[]> [-Header <string[]>] [<C
    ommonParameters>]
    
    Import-CSV -UseCulture [-Path] <string[]> [-Header <string[]>] [<CommonParam
    eters>]
        
説明
    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 ファイルでプロパティ値を区切る区切り文字を指定します。既定値はコンマ 
        (,) です。コロン (:) などの文字を入力します。セミコロン (;) を指定するに
        は、それを引用符で囲みます。
        
        ファイルの文字列に実際に使用される区切り文字以外の文字を指定した場合、Im
        port-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 [<SwitchParameter>]
        現在のカルチャの区切り記号を項目の区切り文字として使用します。既定値はコ
        ンマ (,) です。
        
        カルチャの区切り記号を検索するには、(Get-Culture).TextInfo.ListSeparator 
        コマンドを使用します。CSV 文字列で使用される区切り文字以外の文字を指定し
        た場合、ConvertFrom-CSV は、CSV 文字列からオブジェクトを作成できません。
        代わりに、文字列が返されます。
        
        必須                         true
        位置                         named
        既定値                       コンマ
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    System.String
        パイプを使用してパスを含む文字列を Import-CSV に渡すことができます。
    
出力
    オブジェクト。
        Import-CSV は、CSV ファイルの内容により記述されるオブジェクトを返します。
    
メモ
        インポートされたオブジェクトは CSV バージョンのオブジェクト型であるため、
        非 CSV バージョンのオブジェクト型を書式設定する Windows PowerShell の型
        書式設定エントリにより認識および書式設定されません。
        
        CSV ファイルでは、各オブジェクトはオブジェクトのプロパティ値のコンマ区切
        り一覧で表されます。プロパティ値はオブジェクトの ToString() メソッドを使
        用して文字列に変換されるため、通常はプロパティ値の名前で表されます。Expo
        rt-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 Corp
                                            oration
    ...
    
    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-Cultur
    e コマンドレットを使用して現在のカルチャを取得します。さらに、ドット (.) メ
    ソッドを使用して現在のカルチャの TextInfo プロパティと TextInfo 内のオブジェ
    クトの ListSeparator プロパティを取得します。この例では、このコマンドはコン
    マを返します。
    
    -------------------------- 例 4 --------------------------
    
    C:\PS>start-job -scriptblock { get-process } | export-csv jobs.csv
    
    C:\PS> $header = "MoreData","StatusMessage","Location","Command","State","Fi
    nished","InstanceId","SessionId","Name","ChildJobs","Output","Error","Progre
    ss","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.Automati
                    on.Job]
    Output        : System.Management.Automation.PSDataCollection`1[System.Manag
                    ement.Automation.PSObject]
    Error         : System.Management.Automation.PSDataCollection`1[System.Manag
                    ement.Automation.ErrorRecord]
    Progress      : System.Management.Automation.PSDataCollection`1[System.Manag
                    ement.Automation.ProgressRecord]
    Verbose       : System.Management.Automation.PSDataCollection`1[System.Strin
                    g]
    Debug         : System.Management.Automation.PSDataCollection`1[System.Strin
                    g]
    Warning       : System.Management.Automation.PSDataCollection`1[System.Strin
                    g]
    StateChanged  :
    
    説明
    -----------
    この例は、Import-CSV の Header パラメーターを使用して、結果としてインポート
    されるオブジェクトのプロパティ名を変更する方法を示しています。
    
    最初のコマンドは Start-Job コマンドレットを使用して、ローカル コンピューター
    上で Get-Process コマンドを実行するバックグラウンド ジョブを開始します。パイ
    プライン演算子 (|) によって、結果のジョブ オブジェクトは Export-CSV コマンド
    レットに送られます。このコマンドレットはジョブ オブジェクトを CSV 形式に変換
    します。代入演算子 (=) によって、結果の CSV が Jobs.csv ファイルに保存されま
    す。
    
    2 番目のコマンドは、ヘッダーを $header 変数に保存します。既定のヘッダーとは異
    なり、このヘッダーは "HasMoreData" の代わりに "MoreData" を使用し、"JobStateI
    nfo" の代わりに "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 ファイルからオブジェクトをインポートします。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=113341
    Export-CSV 
    ConvertTo-CSV 
    ConvertFrom-CSV 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、Import-CSV
ご利用数: 1913354
感想・要望・問い合わせは こちら