PowerShellはCSV・JSON・XMLの読み書きに特に強く、データ変換・バッチ処理・API連携で威力を発揮します。
CSVの読み書き
# CSVを読む(ヘッダー付きで自動的にオブジェクト配列になる)
$users = Import-Csv -Path "users.csv" -Encoding UTF8
$users | ForEach-Object {
Write-Host "$($_.Name): $($_.Email)"
}
# フィルタリング
$activeUsers = $users | Where-Object { $_.Status -eq "active" }
# CSVに書き出す
Get-Process | Select-Object Name, Id, CPU |
Export-Csv -Path "processes.csv" -Encoding UTF8 -NoTypeInformation
# オブジェクト配列をCSVに変換
$data = @(
[PSCustomObject]@{Name="Taro"; Age=25; City="Tokyo"},
[PSCustomObject]@{Name="Hanako"; Age=30; City="Osaka"}
)
$data | Export-Csv -Path "output.csv" -Encoding UTF8 -NoTypeInformationJSONの読み書き
# JSONファイルを読む
$config = Get-Content -Path "config.json" -Raw | ConvertFrom-Json
Write-Host $config.database.host
Write-Host $config.database.port
# オブジェクトをJSONに変換して書き出す
$settings = @{
server = "192.168.1.10"
port = 8080
debug = $false
tags = @("production", "web")
}
$settings | ConvertTo-Json -Depth 5 | Set-Content -Path "settings.json" -Encoding UTF8
# REST APIからJSONを取得
$response = Invoke-RestMethod -Uri "https://api.github.com/users/octocat"
Write-Host "名前: $($response.name)"
Write-Host "フォロワー: $($response.followers)"XMLの読み書き
# XMLファイルを読む
[xml]$xml = Get-Content "config.xml"
$xml.configuration.database.host
# XMLを作成
$doc = New-Object System.Xml.XmlDocument
$root = $doc.CreateElement("servers")
$server = $doc.CreateElement("server")
$server.SetAttribute("name", "web01")
$server.SetAttribute("ip", "192.168.1.10")
$root.AppendChild($server) | Out-Null
$doc.AppendChild($root) | Out-Null
$doc.Save("servers.xml")Import-CsvはExcelからエクスポートしたCSVをそのまま読み込んでオブジェクト配列にしてくれるので、「Excelデータを使ったバッチ処理」との相性が抜群です。ただしShift-JISのCSVはEncodingパラメーターで「Default」または「shift-jis」を指定しないと文字化けするので注意が必要です。
hobbyshift管理人
まとめ
- Import-CsvでCSVをオブジェクト配列として読み込み、Export-Csvで書き出せる
- ConvertFrom-JsonでJSON文字列をオブジェクトに、ConvertTo-Jsonで逆変換できる
- Invoke-RestMethodはJSONを自動でオブジェクトに変換してくれるのでAPI連携に最適



コメント