Import-Csv コマンドレットの使用

CSV ファイルの読み込み

Import-Csv コマンドレットを使用すると、コンマ区切り値ファイル (CSV) のデータを読み取り、そのデータを Windows PowerShell コンソールで表形式で表示できます。たとえば、C:\Scripts\Test.txt というファイルがあり、そのファイルには次のデータが含まれるとします。

Name,Department,Title
Pilar Ackerman,Research,Manager
Jonathan Haas,Finance,Finance Specialist
Ken Myer,Finance,Accountant

画面に表形式でデータを表示しますか。その場合、Import-Csv に開くファイルのパスを続けます。

Import-Csv c:\scripts\test.txt

次に、Windows PowerShell に次のように出力されます。

Name                       Department                 Title
----                       ----------                 -----
Pilar Ackerman             Research                   Manager
Jonathan Haas              Finance                    Finance Specialist
Ken Myer                   Finance                    Accountant

すばらしいですね。ただ、もっと楽しみたい場合は...、そうです。もっと楽しみたい場合は、CSV ファイルのインポート以外を実行してみることです。言い方を変えましょう。もう少し楽しみたい場合は、インポートしたデータを Where-Object コマンドレットにパイプ処理します。たとえば、次のコマンドを使用すると、会計 (Finance) 部門に勤務する従業員のみが取得されます。

Import-Csv c:\scripts\test.txt | Where-Object {$_.department -eq "Finance"}

結果のデータセットは次のようになります。

Name                       Department                 Title
----                       ----------                 -----
Jonathan Haas              Finance                    Finance Specialist
Ken Myer                   Finance                    Accountant

パイプラインの右側が暗号のように見えるかもしれません。ただし、まったく解釈できないわけではありません。$_ は単純に現在のオブジェクトを示す Windows PowerShell の表記方法です。当然ながら現在のオブジェクトはテキスト ファイル C:\Scripts\Test.txt です。.department は標準的なドット表記方法です。objItem.Name のように表記することで、WMI プロパティを参照する方法と同じです。ここでの目的は、問題のテキスト ファイルについて、Department プロパティ (Department フィールド) 値をチェックするということです。フィールドが Finance に等しい (-eq) 場合、表示します。Finance に等しくない場合、表示しません。

金融部門以外の全従業員のレコードを表示するとします。この場合、次のコマンドと -ne ("等しくない" という意味です) を使用します。

Import-Csv c:\scripts\test.txt | Where-Object {$_.department -ne "Finance"}

このコマンドは以下のデータを返します。

Name                       Department                 Title
----                       ----------                 -----
Pilar Ackerman             Research                   Manager

where 句に複数のアイテムを指定できるでしょうか。はい、できます。2 つの条件を -and または -or で連結するだけです。たとえば、次のコマンドを使用すると、会計部門に勤務する会計士のみが返されます。

Import-Csv c:\scripts\test.txt | Where-Object {$_.department -eq "Finance" -and $_.title -eq "Accountant"}

どういうことでしょうか。つまり、次のような情報が返されるということです。

Name                       Department                 Title
----                       ----------                 -----
Ken Myer                   Finance                    Accountant

一方、このコマンドは、調査 (Research) 部門に勤務する従業員か、会計士の一覧を返します。

Import-Csv c:\scripts\test.txt | Where-Object {$_.department -eq "Research" -or $_.title -eq "Accountant"}

このコマンドを実行したときに返される情報については、推測できると思います。

Name                       Department                 Title
----                       ----------                 -----
Pilar Ackerman             Research                   Manager
Ken Myer                   Finance                    Accountant

かっこいいですね。

Import-Csv のエイリアス
  • ipcsv

関連リンク