PowerShell でデータを CSV にエクスポートする

Migel Hewage Nimesha 2023年1月30日
  1. Export-CSV PowerShell コマンドレットを使用してデータを CSV にエクスポートする
  2. ConvertTo-CSV PowerShell コマンドレットを使用してデータを CSV にエクスポートする
PowerShell でデータを CSV にエクスポートする

CSV ファイルは、コンテンツに特定の形式が適用された、区切られたテキストファイルです。次の例に示すように、形式は単純なテーブル構造に非常に似ています。

例えば、

Name, NIC, Phone

John, 394829G,  +671392392

Risabh, 32909340J, +12328833

CSV は、Comma Separated Values の短縮形です。ファイルタイプ(CSV)が示すように、コンマを使用してデータ値を区切ります。データを含む CSV ファイルを生成するために利用できるさまざまなツールがあります。

この記事では、PowerShell でデータを CSV ファイルにエクスポートする方法について説明します。

Export-CSV PowerShell コマンドレットを使用してデータを CSV にエクスポートする

Export-CSV は、CSV 形式でデータをエクスポートするために使用できる PowerShell コマンドレットの 1つです。このコマンドレットは比較的使いやすく、いくつかのプロパティも利用できます。

Export-CSV コマンドレット構文

<data_objects/content> | Export-CSV -Path <path> 
  • <data_objects/content>:Export-CSV コマンドレットにフィードされるデータオブジェクト/コンテンツ。
  • Export-CSV:CSV 形式でデータをエクスポートするコマンドレット。
  • -Path:csv ファイルを保存するパス。

例 01

Get-Process コマンドレットを使用していくつかのデータオブジェクトを返し、それらを Export-CSV コマンドレットにフィードして CSV 形式でエクスポートできます。

Get-Process

出力:

Handles	NPM(k)	PM(K)	WS(K)	CPU(s)	Id		SI 		ProcessName
313		14		3712	10756	7.69	39500	0		ApplicationFrameHost
507		30		22864	22836	2.11	18156	2		armsvc

複数のプロセスオブジェクトが返される場合があります。パイプ (|) 演算子を使用して、返されたオブジェクトを Export-CSV コマンドレットにフィードできます。次に、Get-Content コマンドレットを使用して、エクスポートされた CSV コンテンツを確認できます。

Get-Process | Export-CSV -Path .\ProcessObjects.csv
Get-Content -Path .\ProcessObjects.csv

出力:

"ProcessName","SI","Handles","VM","WS","PM","NPM", .....
"armsvc","2","511","2203597099008","35364864","21979136","30048", ...
"xyz","0","501","299393939","9982824","0021000","393393", ...

Export-CSV コマンドレットのデフォルトの動作を変更するために使用できる便利なプロパティはほとんどありません。

例 02

Get-Process | Export-CSV -Path .\ProcessObjects.csv -Delimiter ';'
Get-Content -Path .\ProcessObjects.csv

出力:

"ProcessName";"SI";"Handles";"VM";"WS";"PM";"NPM"; .....
"armsvc";"2";"511";"2203597099008";"35364864";"21979136";"30048"; ...

-Delimiter オプションは、区切り文字をデフォルトのから指定された記号に変更します。

ConvertTo-CSV PowerShell コマンドレットを使用してデータを CSV にエクスポートする

ConvertTo-CSV コマンドレットは、上記の Export-CSV コマンドレットとほぼ同じです。2つの違いは、Export-csv コマンドレットが CSV 文字列をファイルに保存することだけですが、ConvertTo-CSV の場合はそうではありません。カンマ区切りの値の文字列を返すだけです。

ConvertTo-CSV コマンドレット構文

<data_objects/content> | ConvertTo-CSV 
  • <data_objects/content>ConvertTo-CSV コマンドレットにフィードされるデータオブジェクト/コンテンツ。
  • ConvertTo-CSV:CSV 文字列を返すためのコマンドレット。

Get-Process | ConvertTo-Csv

出力:

"ProcessName","SI","Handles","VM","WS","PM","NPM", .....
"armsvc","2","511","2203597099008","35364864","21979136","30048", ...
"xyz","0","501","299393939","9982824","0021000","393393", ...p

したがって、Export-CSV コマンドレットと ConvertTo-CSV コマンドレットはどちらも、PowerShell を使用して CSV 形式のデータを生成するための便利なツールです。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

関連記事 - PowerShell CSV