Как сохранить объект JSON в файл с помощью Powershell?
Я преобразовал следующий файл 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\"
}
]
}
Вопрос: как добиться правильного сохранения сложного JSON-представления powershell?
5 ответов
Глубокий аргумент для ConvertTo-Json решает проблему.
$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
Если вы хотите одновременно просмотреть вывод и сохранить его в файл, вы можете передать команду tee.
Get-Process powershell | ConvertTo-Json | Tee-Object json.txt
Если вы застряли в PowerShell версии 2, вам может помочь модуль JSON Джоэла Беннетта из "PowerShell Code Repository".
1) Команда ниже может быть использована для преобразования json в CSV
Пример:Get-Content package.json | Out-String | ConvertFrom-Json | Select parameter1, parameter2, parameter3 | ConvertTo-Csv -NoTypeInformation | Format-Table >> C:\JenkinsWorkspace\Result.csv
Get-Content: это похоже на команду "cat" в linux, которая получает все данные из файла "package.json" и конвертирует их из Json (используя функцию ConvertFrom-Json), извлекая подробности только необходимых параметров, а затем преобразуя их в CSV, используя Функция "ConvertTo-Csv" без каких-либо нежелательных заголовков типов и форматирования их в таблицу.
2) Приведенный выше результат также можно отформатировать в соответствующий csv, чтобы просмотреть его в формате Excel без дубликатов, а также с преобразованием текста в столбцы с помощью следующей команды:
Import-Csv "C:\Result.csv" -delimiter "," | Sort-Object _from -Unique | Export-csv "C:\FINAL_REPORT_$date.csv"