PowerShell - выбор отдельных значений из столбца в подмассиве - PullRequest
0 голосов
/ 08 мая 2018

Я работаю со сценарием PS, который выводит 2 столбца - имена экземпляров EC2 в столбцах A и EBS в столбцах B. В настоящее время сценарий записывает все тома в одну и ту же строку для этого экземпляра (в качестве подмассива). ,

Есть ли способ вывести имя экземпляра, а затем все связанные тома перед записью следующего набора?

$Instances | select @{n="InstanceId";e={$_}}, @{n="VolumeId";e={((Get-EC2Volume).Attachments | ? InstanceId -eq $_).VolumeId}}

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Итак, вы получаете что-то похожее на ....

, @ {volume1, volume2}

И вы хотите что-то похожее на ...

volume1 volume2

Мне кажется, я понял это правильно, основываясь на вашем посте:

... вывести имя экземпляра, а затем все связанные тома ...

Вот мое факсимиле вашего набора данных:

$stuff = @{'box1' = @('v1', 'v2', 'v3'); 'box2' = @('v4', 'v3', 'v9') }

Я бы сделал что-то подобное, чтобы добиться того, что вам нужно:

foreach ($key in $stuff.keys) {
    $key
    $stuff[$key]
}

Когда я пробую это на моей маленькой старой машине, вот что я вижу:

enter image description here

0 голосов
/ 08 мая 2018

Я думаю, что ваш способ перечисления volumeIDs неэффективен, но без знания свойств $Instances или (Get-EC2Volume).Attachments это может сработать:

$NewTable = ForEach ($Instance in $Instances){
    (Get-EC2Volume).Attachments | ? InstanceId -eq $Instance | %{
        [PsCustomObject]@{
            'Instance' = $Instance
            'Volume'   = $_.VolumeId
        }
    }
}
$NewTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...