WindowsPowerShell

PowerShellでCSV・JSON・XMLを操作する【Import-Csv・ConvertFrom-Json完全ガイド】

WindowsPowerShell
記事内に広告が含まれています。

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 -NoTypeInformation

JSONの読み書き

# 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として操作できる

コメント

タイトルとURLをコピーしました