PowerShellでファイルタイプをワークする: CSV, JSON, XML
PowerShellは、ファイルとデータとのやり取りを行うための強力なツールです。このチュートリアルでは、三つの一般的なファイルタイプ:CSV (Comma Separated Values)、JSON (JavaScript Object Notation)、XML (Extensible Markup Language)について紹介します。各ファイルタイプの基礎知識とPowerShellでの読み込み、書き込み、操作方法を説明します。
CSVファイル
CSVファイルは、テーブル形式でデータを保存する簡単な方法です。各行がレコードで、各列がカンマ区切ります。
CSVファイルの読み込み
PowerShellでは、Import-CSV cmdletを使用してCSVファイルを読み込みます。
$csvData = Import-CSV -Path "C:\Example\example.csv" -Header "Column1", "Column2"
このコマンドでは指定されたCSVファイルのデータを $csvData 変数に格納します。 -Header パラメーターは、カラムヘッダーを指定します。
CSVファイルの書き込み
PowerShellでは、Export-CSV cmdletを使用してデータをCSVファイルに書き込みます。
$csvData | Export-CSV -Path "C:\Example\output.csv" -NoTypeInformation
このコマンドでは $csvData 変数のデータを新しいCSVファイルにExportします。
JSONファイル
JSONファイルは、軽量な方法でデータを保存し交換するために使われます。Web開発やAPIのインタラクションなどでよく使用されます。
JSONファイルの読み込み
PowerShellでは、ConvertFrom-JSON cmdletを使用してJSONファイルを読み込みます。
$jsonData = Get-Content -Path "C:\Example\data.json" | ConvertFrom-JSON
このコマンドでは指定されたJSONファイルのデータを $jsonData 変数に格納します。
JSONファイルの書き込み
PowerShellでは、ConvertTo-JSON cmdletを使用してデータをJSONファイルに書き込みます。
$data = [PSCustomObject]@{Name="John"; Age=30}
$jsonData = $data | ConvertTo-JSON
$jsonData | Set-Content -Path "C:\Example\output.json"
このコマンドでは $data 変数のデータを新しいJSONファイルにExportします。
XMLファイル
XMLファイルは、構造化されたデータを保存し交換するために使われます。設定ファイル、API、および他のシステムでよく使用されます。
XMLファイルの読み込み
PowerShellでは、Select-XML cmdletを使用してXMLファイルを読み込みます。
$xmlData = Select-XML -Path "C:\Example\data.xml" -XPath "//root"
このコマンドでは指定されたXMLファイルのデータを $xmlData 変数に格納します。
XMLファイルの書き込み
PowerShellでは、New-XML cmdletを使用してデータをXMLファイルに書き込みます。
$xml = New-XML -Name "root" -Namespace "http://example.com"
$xml.AddElement("person")
$xml.person.AddAttribute("name", "John")
$xml.Save("C:\Example\output.xml")
このコマンドでは新しいXMLファイルに $data 変数のデータをExportします。
PowerShellスクリプト例
以下は、これらのファイルタイプでのワーク方法を示すサンプルスクリプトです。
# Example 1: CSVをJSONに読み書き
$csvData = Import-CSV -Path "C:\Example\example.csv" -Header "Column1", "Column2"
$jsonData = $csvData | ConvertTo-JSON
$jsonData | Set-Content -Path "C:\Example\output.json"
# Example 2: JSONをCSVに読み書き
$jsonData = Get-Content -Path "C:\Example\data.json" | ConvertFrom-JSON
$csvData = $jsonData | ConvertTo-Csv
$csvData | Set-Content -Path "C:\Example\output.csv"
# Example 3: XMLをCSVに読み書き
$xmlData = Select-XML -Path "C:\Example\data.xml" -XPath "//root"
$csvData = $xmlData | ConvertTo-Csv
$csvData | Set-Content -Path "C:\Example\output.csv"
# Example 4: JSONをXMLに読み書き
$jsonData = Get-Content -Path "C:\Example\data.json" | ConvertFrom-JSON
$xmlData = New-XML -Name "root" -Namespace "http://example.com"
$xmlData.AddElement("person")
foreach ($item in $jsonData) {
$xmlPerson = $xmlData.person.AddElement("person")
$xmlPerson.AddAttribute("name", $item.name)
}
$xmlData.Save("C:\Example\output.xml")
この例では、異なるファイルタイプ間でのデータの読み込みと書き込みを示しています。