次のJSONファイルをpowershell表現オブジェクトに変換しました。
{
"computer": [
{
"children": [
{
"children": [ {
"children": [ {
"path": "T:\Dropbox\kvaki.html",
"name": "kvaki",
"type": "url",
"url": "http://example.com"
} ],
"path": "T:\Dropbox\",
"name": "Njusha",
"type": "folder"
}, {
"path": "T:\Dropbox\Europa.html",
"name": "Europa",
"type": "url",
"url": "http://example.com"
}, {
"path": "T:\Dropbox\math.html",
"name": "math",
"type": "url",
"url": "http://example.com"
} ],
"path": "T:\Dropbox\",
"name": "Money",
"type": "folder"
}
],
"full_path_on_file_sys": "T:\Dropbox\"
}
]
}
PowerShell表現で計算を行った後、JSONとしてファイルに保存したいと思います。しかし、コマンド$jsonRepresentation | ConvertTo-Json | Out-File "D:\dummy_path\file.json"
この方法で保存します
{
"computer": [
{
"children": " ",
"full_path_on_file_sys": "T:\Dropbox\"
}
]
}
質問:複雑なPowerShell JSON表現の正しい保存を実現する方法?
ConvertTo-Jsonの-depth引数は、問題を解決します。
$jsonRepresentation | ConvertTo-Json -depth 100 | Out-File "D:\dummy_path\file.json"
それをSet-ContentまたはOut-Fileにパイプするだけです:
Get-Process powershell |
ConvertTo-Json |
Set-Content json.txt
powerShellバージョン2にこだわっている場合は、 「PowerShellコードリポジトリ」のJoel BennettのJSONモジュール が役立つ場合があります。
$json.properties.metadata | ConvertTo-Json -Compress
出力の表示とファイルへの保存の両方を行う場合は、teeコマンドをパイプできます。
Get-Process powershell | ConvertTo-Json | Tee-Object json.txt