PowerShell - 从子数组中的列中选择单个值

时间:2018-05-08 11:59:41

标签: powershell

我正在使用输出2列的PS脚本 - col A中的EC2实例名称和col B中的EBS卷。目前,脚本正在将所有卷写入该实例的同一行(作为子数组) 。

在编写下一组之前,有没有办法可以输出实例名称然后输出所有相关的卷?

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

2 个答案:

答案 0 :(得分:0)

我认为枚举volumeID的方式效率很低,但如果不知道$Instances(Get-EC2Volume).Attachments的属性,这可能会有效:

$NewTable = ForEach ($Instance in $Instances){
    (Get-EC2Volume).Attachments | ? InstanceId -eq $Instance | %{
        [PsCustomObject]@{
            'Instance' = $Instance
            'Volume'   = $_.VolumeId
        }
    }
}
$NewTable

答案 1 :(得分:0)

所以,你得到的东西看起来像......

,@ {volume1,volume2}

而且,你想要的东西看起来像......

VOLUME1 卷2

我认为我根据你的帖子做到了这一点:

  

...输出实例名称,然后输出所有相关的卷......

以下是我的数据集传真:

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

我会做这样的事情来实现你之后的目光:

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

当我在我的小机器上试用时,这就是我所看到的:

enter image description here