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 で空の配列の配列を作成する方法
