PowerShell で CSV ファイルを配列にインポートする方法
- カンマ区切り値ファイル
-
Import-CSV
コマンドレットを使用して CSV ファイルを PowerShell の配列にインポートする -
Get-Content
およびConvertFrom-Csv
コマンドレットを使用して CSV ファイルを PowerShell の配列にインポートする -
System.IO.File
とConvertFrom-Csv
コマンドレットを使用して CSV ファイルを PowerShell の配列にインポートする - 結論

CSV(カンマ区切り値)ファイルは、情報をカンマで区切ったフィールドを持つ表形式の構造でカプセル化する基本的なデータ形式です。スプレッドシートソフトウェアに一般的に関連付けられているものの、そのシンプルでありながら多用途の性質は、PowerShell を含むさまざまなプラットフォームでの応用を見出しています。
PowerShell スクリプトにおいて、CSV データを効率的に読み取り、処理することは自動化やデータ操作タスクにとって重要です。本記事では、CSV ファイルを配列にインポートするための Import-CSV
、Get-Content
コマンドレット、および ConvertFrom-Csv
コマンドレットを使用した System.IO.File
クラスの 3つの方法を探ります。それぞれの使用法、利点、および適用シナリオに関する洞察を提供します。
カンマ区切り値ファイル
CSV(カンマ区切り値)ファイルは、カンマで区切られたデータまたはセットを含みます。これにより、データを表形式で保存できます。
ユーザーは、Microsoft Excel や Google スプレッドシートなどのほとんどのスプレッドシートプログラムで CSV ファイルを利用できます。しかし、表形式に対応していないソフトウェアで開くと、データはカンマで区切られ、PowerShell が配列に値を分離するために利用できます。
たとえば、以下は 2つの列を持つ生の CSV 形式です。
users.csv
ファイル:
Name,Salary
John,1000
Paul,2000
Mary,1500
Matt,3000
Import-CSV
コマンドレットを使用して CSV ファイルを PowerShell の配列にインポートする
Windows PowerShell の Import-CSV
コマンドは、上記の CSV ファイルに表示された項目からカスタムオブジェクトのようなテーブルを作成します。
以下の Windows PowerShell スクリプトでは、Import-CSV
コマンドを使用して CSV ファイルデータを Windows PowerShell の配列型変数に割り当てます。
$users = Import-Csv path\users.csv
$users
path\users.csv
にある CSV ファイルからデータを読み込むために Import-Csv
コマンドレットを使用します。このコマンドレットは、CSV ファイルの内容を読み取り、PowerShell オブジェクトに変換します。
次に、インポートした CSV データを変数 $users
に割り当てます。この変数には、CSV ファイルの内容がオブジェクトの配列として格納されており、各オブジェクトは CSV ファイルの行を表します。
実行後、CSV ファイルの値が ArrayList
オブジェクトと呼ばれる形式リストに変換されたのを見ることができます。
出力:
PowerShell の配列に CSV ファイルをインポートした後の要素へのアクセス
PowerShell で Import-Csv
を使用して CSV ファイルをインポートすると、CSV ファイルの各行はオブジェクトとして表現され、CSV データ全体はこれらのオブジェクトの配列として保存されます。CSV データ内の個々の行や要素にアクセスするには、配列のインデクシングを使用します。
$users = Import-Csv path\users.csv
$users[0]
指定されたパスにある users.csv
という名前の CSV ファイルをインポートすることから始めます。この目的のために Import-Csv
コマンドレットを使用します。
このコマンドレットは、CSV ファイルの内容を読み取り、PowerShell オブジェクトに変換します。
CSV ファイルをインポートした後、CSV データの最初の行にアクセスしたいと思います。これは配列のインデクシングを使用して達成します。
PowerShell では、配列のインデクシングは 0 から始まるため、$users[0]
は $users
配列の最初の要素(または行)を指します。
出力:
特定の要素からのプロパティを Windows PowerShell 配列から取得するには、カラム名をプロパティ名として扱います。以下の例のように。
$users = Import-Csv path/users.csv
$users[0].Name
CSV ファイルをインポートしてその内容を $users
変数に保存した後、CSV データの最初の行の特定のプロパティにアクセスします。この場合、最初の行の Name
プロパティの値を取得します。
$users[0].Name
を指定することで、CSV データの最初の行を表すオブジェクトの Name
プロパティにアクセスしています。これにより、最初の行に対して CSV ファイルの Name
列に関連付けられた値を取得できます。
出力:
配列内の要素の数を Count
プロパティを使用してカウントできます。
$users = Import-Csv path/users.csv
$users.Count
CSV ファイルをインポートしてその内容を $users
変数に保存した後、配列内のアイテム(行)の数を決定したいと思います。
$users.Count
を使用することで、$users
変数に保存されている配列の Count
プロパティにアクセスしています。このプロパティは、配列内のアイテム(行)の数を返します。
出力:
Get-Content
および ConvertFrom-Csv
コマンドレットを使用して CSV ファイルを PowerShell の配列にインポートする
このタスクを達成するための 1つの簡単なアプローチは、Get-Content
と ConvertFrom-Csv
コマンドレットを使用することです。この方法では、Get-Content
を使用して CSV ファイルの内容をテキストとして読み取り、その後 ConvertFrom-Csv
を使用して PowerShell オブジェクトに変換し、CSV データの各行を表すオブジェクトの配列を作成します。
$content = Get-Content -Path "C:\path\data.csv"
$array = $content | ConvertFrom-Csv
$array
指定されたパスにある CSV ファイルの内容を読み取るためにまず Get-Content
を使用し、それを $content
変数に格納します。
次に、$content
に保存された CSV ファイルの内容を ConvertFrom-Csv
にパイプします。このコマンドレットは、CSV テキストを PowerShell オブジェクトに変換し、それを $array
変数に格納します。
実行後、CSV ファイルの値が ArrayList
オブジェクトと呼ばれる形式リストに変換されたのを見ることができます。
出力:
System.IO.File
と ConvertFrom-Csv
コマンドレットを使用して CSV ファイルを PowerShell の配列にインポートする
System.IO.File
クラスは、CSV ファイルの内容を読み取り、その後 ConvertFrom-Csv
コマンドレットを使用して PowerShell オブジェクトに変換します。この方法は柔軟性を提供するだけでなく、使いやすさを確保し、ユーザーが PowerShell スクリプト内で CSV データをシームレスに管理できるようにします。
$content = [System.IO.File]::ReadAllText("C:\path\data.csv")
$array = $content | ConvertFrom-Csv
$array
[System.IO.File]::ReadAllText
を使用して、指定されたパスにある CSV ファイルの内容を読み取り、それを $content
変数に格納します。
次に、$content
に保存された CSV ファイルの内容を ConvertFrom-Csv
にパイプします。このコマンドレットは、CSV テキストを PowerShell オブジェクトに変換し、それを $array
変数に格納します。
実行後、CSV ファイルの値が ArrayList
オブジェクトと呼ばれる形式リストに変換されたのを見ることができます。
出力:
結論
PowerShell スクリプトにおいて、CSV データをシームレスに扱うことは、効果的な自動化やデータ処理にとって不可欠です。Import-CSV
、Get-Content
コマンドレット、または ConvertFrom-Csv
コマンドレットを使用した System.IO.File
クラスを活用することで、ユーザーは効率的に CSV ファイルを配列に読み込むことができ、データを簡単にかつ柔軟に操作できます。
大規模なデータセットから洞察を抽出したり、繰り返し作業を自動化したりする際に、これらの方法は PowerShell 開発者にとって強力なツールを提供します。これらのテクニックを明確に理解することで、ユーザーはスクリプト内で CSV データの力を活用し、ワークフローを簡素化し、生産性を向上させることができます。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn関連記事 - PowerShell Array
- PowerShell でオブジェクトの配列にオブジェクトを追加する方法
- PowerShell 多次元配列
- PowerShell 配列から重複値を削除する方法
- PowerShell で配列を関数に渡す方法
- PowerShell で空の配列の配列を作成する方法