PowerShellはCSV・JSON・XMLをネイティブに扱えます。システム管理やデータ処理の自動化でこれらの形式を頻繁に扱うため、読み書き方法をしっかり押さえておきましょう。
CSVの読み書き
# CSVファイルを読み込む(ヘッダー行は自動でプロパティ名になる)
$data = Import-Csv "C:\data\users.csv" -Encoding UTF8
$data | ForEach-Object {
Write-Host "$($_.Name), $($_.Age), $($_.City)"
}
# フィルタリング
$adults = $data | Where-Object { [int]$_.Age -ge 20 }
# CSVに書き出す
$users = @(
[PSCustomObject]@{Name="Taro"; Age=25; City="Tokyo"},
[PSCustomObject]@{Name="Hanako"; Age=30; City="Osaka"}
)
$users | Export-Csv "output.csv" -Encoding UTF8 -NoTypeInformationJSONの読み書き
# JSONファイルを読み込む
$json = Get-Content "config.json" -Raw -Encoding UTF8 | ConvertFrom-Json
Write-Host $json.server.host
Write-Host $json.server.port
# PSオブジェクトをJSONに変換
$config = [PSCustomObject]@{
Server = [PSCustomObject]@{ Host="localhost"; Port=8080 }
Debug = $false
Tags = @("web","api")
}
$config | ConvertTo-Json -Depth 5 | Set-Content "config.json" -Encoding UTF8
# Web APIのJSONレスポンスを処理
$response = Invoke-RestMethod "https://api.github.com/users/microsoft"
Write-Host "フォロワー数: $($response.followers)"XMLの読み書き
# XMLファイルを読み込む
[xml]$config = Get-Content "app.config" -Encoding UTF8
$config.configuration.appSettings.add | ForEach-Object {
Write-Host "$($_.key) = $($_.value)"
}
# XMLを作成
$xml = New-Object System.Xml.XmlDocument
$root = $xml.CreateElement("configuration")
$xml.AppendChild($root)
$item = $xml.CreateElement("item")
$item.SetAttribute("name","test")
$item.SetAttribute("value","123")
$root.AppendChild($item)
$xml.Save("output.xml")まとめ
- Import-Csv / Export-CsvでCSVを簡単に読み書きできる
- ConvertFrom-Json / ConvertTo-JsonでJSONとオブジェクトを相互変換できる
- Invoke-RestMethodでREST APIのJSONレスポンスを直接オブジェクトとして受け取れる
- [xml]型でXMLファイルをDOMとして操作できる



コメント