Как написать цикл для кода ниже для отображения значений до n, присутствующих в файле .json, вместо того, чтобы пытаться получить результаты для каждого - PullRequest
0 голосов
/ 30 июня 2018

Как написать цикл для приведенного ниже кода, чтобы извлекать все значения одновременно в файле и не использовать его для извлечения значений для каждого {0} {1} .., присутствующего в файле.

$data = Get-Content -Path 'C:\Users\Username\Downloads\ScheduledJobs1.json' | ConvertFrom-Json

$Status1 = $("{0:N1}" -f $data.value.CompletedJobs.State.Name)
$Asset1 = $("{0:N1}" -f $data.value.Application.Asset.Name)
$Application1 = $("{0:N1}" -f $data.value.Application.Name)

$Status2 = $("{1:N1}" -f $data.value.CompletedJobs.State.Name)
$Asset2 = $("{1:N1}" -f $data.value.Application.Asset.Name)
$Application2 = $("{1:N1}" -f $data.value.Application.Name)

$Status3 = $("{2:N1}" -f $data.value.CompletedJobs.State.Name)
$Asset3 = $("{2:N1}" -f $data.value.Application.Asset.Name)
$Application3 = $("{2:N1}" -f $data.value.Application.Name)

$Status4 = $("{3:N1}" -f $data.value.CompletedJobs.State.Name)
$Asset4 = $("{3:N1}" -f $data.value.Application.Asset.Name)
$Application4 = $("{3:N1}" -f $data.value.Application.Name)

$Status5 = $("{4:N1}" -f $data.value.CompletedJobs.State.Name)
$Asset5 = $("{4:N1}" -f $data.value.Application.Asset.Name)
$Application5 = $("{4:N1}" -f $data.value.Application.Name)

1 Ответ

0 голосов
/ 30 июня 2018

Когда вы ConvertFrom-Json, вы получаете $data как структурированный объект PowerShell. Я вижу, вы пытаетесь уточнить значения этого объекта в соответствии с вашими требованиями. В идеале вы хотели бы, чтобы эти уточненные значения в другом объекте использовались в другом месте.

    $data = Get-Content -Path 'C:\Users\Username\Downloads\ScheduledJobs1.json' | ConvertFrom-Json

    $Result = for ($i = 0; $i -lt $maxCount; $i++)
    {
        $Obj = [PScustomObject]@{
            Status = $("{$i`:N1}" -f $data.value.CompletedJobs.State.Name)
            Asset = $("{$i`:N1}" -f $data.value.Application.Asset.Name)
            Application = $("{$i`:N1}" -f $data.value.Application.Name)
        }
        $Obj
    }

    $Result | ft

Где $maxcount в вашем случае 4 или если в вашем Json больше данных, вероятно, это $data.Count. Это ваша обязанность выяснить.

Это создаст объект $obj с 3 свойствами на каждую итерацию и добавит его к $result.

Итак, $Result будет иметь ваш последний консолидированный объект. Сделайте это: $result | ft и посмотрите, хотите ли вы этого.

...