PowerShell でデータを CSV にエクスポートする
-
Export-CSVPowerShell コマンドレットを使用してデータを CSV にエクスポートする -
ConvertTo-CSVPowerShell コマンドレットを使用してデータを 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 形式のデータを生成するための便利なツールです。
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.
