Скрипт Powershell для преобразования файла переменных JSON в CSV - PullRequest
0 голосов
/ 23 октября 2019

Я новичок в Powershell, поэтому прошу прощения за любые ошибки, которые могут возникнуть. Мне нужно написать скрипт Powershell для преобразования файла переменной JSON в CSV. Мне нужно перебрать файл и выбрать все переменные для полей Name и Id.

Сначала я конвертирую файл json в String. Но я не уверен, как перебрать файл json и выбратьлюбой из элементов поля имени. Затем я экспортирую его в файл CSV.

Это преобразует файл JSON в строку

$data = (Get-Content "C:\Users\QVL6\Downloads\express-ordering-web- 
variables.json" | ConvertFrom-Json)

Это экспортирует его в файл CSV:

 $data | Select-Object -Name,  Description | Export -Csv -Path .\data.csv 
 -  NoClobber -NoTypeInformation

Iнужна помощь для каждого цикла, который будет проходить по файлу и помещать любое из значений поля имени в файл csv под заголовком Name.

Ниже приведены первые 3 объекта файла json:

{
      "Id": "f73bdd3d-0449-036d-c2b6-b5fde280b05f",
      "Name": "CIFolderPermissionGroup",
      "Description": null,
      "Scope": {},
      "IsEditable": true,
      "Prompt": null,
      "Type": "String",
      "IsSensitive": false
    },
    {
      "Id": "f138f849-1647-4346-6ac4-cee4bdbd808a",
      "Name": "CustomInstallFolder",
      "Value": "c:\\inetpub\\wwwroot",
      "Description": null,
      "Scope": {},
      "IsEditable": true,
      "Prompt": null,
      "Type": "String",
      "IsSensitive": false
    },
    {
      "Id": "99d478fb-6ef3-cc21-7997-4a9b12f3ad00",
      "Name": "eimasConfiguartion",
      "Value": "{\"issuelocal/":true}",
      "Description": null,
      "Scope": {
        "Environment": [
          "Environments-63"
        ]
    }

На данный момент это мой код: $ json = (Get-Content "C: \ Users \ QVL6 \ Downloads \ express-ordering-web- variables.json" | ConvertFrom-Json)

# helper to turn PSCustomObject into a list of key/value pairs
function Get-ObjectMembers {
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$True, ValueFromPipeline=$True)]
        [PSCustomObject]$obj
)
$obj | Get-Member -MemberType NoteProperty | ForEach-Object {
    $key = $_.Name
    [PSCustomObject]@{Key = $key; Value = $obj."$key"}
}

}

#Produce a list of output objects with Name, Type, Value and Description

$ | ConvertFrom-Json | Get-ObjectMembers | foreach {
   $_.Value | Get-ObjectMembers | where Key -match "Name" | foreach {
        [PSCustomObject]@{
            Name = $_.value.data.value | select 
            Type = $_.Value.data | value | select 
            Value = $_.Value.data | value | select 
            Description = $_.Value.data | value | select    
        }
    }
}


$path = C:\Users\QVL6\
$data | Select-ObjectMambers -Property Name, Type, Value, Description | 
Export -Csv -Path .\data.csv -NoClobber -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...