powershell: json -> csv

Иногда бывает необходимость найти что-то в длинном JSON, например вот такого вида:

{
    "relations": [{
            "ID": 8449,
            "LinkType": 2,
            "Changed Date": "2019-08-23T08:36:52.627Z",
            "Revised Date": "9999-01-01T00:00:00Z",
            "AuthorizedAddedDate": "2019-08-23T08:36:52.627Z",
            "AuthorizedRemovedDate": "9999-01-01T00:00:00Z",
            "Changed By": 23953,
            "Revised By": -1,
            "Lock": false,
            "Comment": ""
        }, {
            "ID": 8452,
            "LinkType": 2,
            "Changed Date": "2019-08-23T08:55:54.503Z",
            "Revised Date": "9999-01-01T00:00:00Z",
            "AuthorizedAddedDate": "2019-08-23T08:55:54.503Z",
            "AuthorizedRemovedDate": "9999-01-01T00:00:00Z",
            "Changed By": 23953,
            "Revised By": -1,
            "Lock": false,
            "Comment": ""
        }, {
            "ID": 8451,
            "LinkType": 2,
            "Changed Date": "2019-08-23T08:55:54.503Z",
            "Revised Date": "9999-01-01T00:00:00Z",
            "AuthorizedAddedDate": "2019-08-23T08:55:54.503Z",
            "AuthorizedRemovedDate": "9999-01-01T00:00:00Z",
            "Changed By": 23953,
            "Revised By": -1,
            "Lock": false,
            "Comment": ""
        }, {
            "ID": 8450,
            "LinkType": 2,
            "Changed Date": "2019-08-23T08:35:54.387Z",
            "Revised Date": "9999-01-01T00:00:00Z",
            "AuthorizedAddedDate": "2019-08-23T08:35:54.387Z",
            "AuthorizedRemovedDate": "9999-01-01T00:00:00Z",
            "Changed By": 19418,
            "Revised By": -1,
            "Lock": false,
            "Comment": ""
        }, {
            "ID": 8453,
            "LinkType": 2,
            "Changed Date": "2019-08-23T08:46:00.823Z",
            "Revised Date": "9999-01-01T00:00:00Z",
            "AuthorizedAddedDate": "2019-08-23T08:46:00.823Z",
            "AuthorizedRemovedDate": "9999-01-01T00:00:00Z",
            "Changed By": 19418,
            "Revised By": -1,
            "Lock": false,
            "Comment": ""
        }, {
            "ID": 8448,
            "LinkType": 2,
            "Changed Date": "2019-08-23T08:36:10.91Z",
            "Revised Date": "9999-01-01T00:00:00Z",
            "AuthorizedAddedDate": "2019-08-23T08:36:10.91Z",
            "AuthorizedRemovedDate": "9999-01-01T00:00:00Z",
            "Changed By": 23953,
            "Revised By": -1,
            "Lock": false,
            "Comment": ""
        }, {
            "ID": 8454,
            "LinkType": 2,
            "Changed Date": "2019-08-23T08:57:02.873Z",
            "Revised Date": "9999-01-01T00:00:00Z",
            "AuthorizedAddedDate": "2019-08-23T08:57:02.873Z",
            "AuthorizedRemovedDate": "9999-01-01T00:00:00Z",
            "Changed By": 19418,
            "Revised By": -1,
            "Lock": false,
            "Comment": ""
        }
    ]
}

Намного удобнее искать значения когда такие данные представлены в виде таблицы. решаем проблему такой командой:

Get-Content -Path '.\relations.json' | ConvertFrom-Json | Select-Object -ExpandProperty relations | ConvertTo-Csv -NoTypeInformation -Delimiter ';' | Out-File -FilePath 'relations.csv' -Encoding utf8

233 Words

2019-08-23 07:29 +0300