4

我正在尝试从返回的对象中检索 instanceid、公共 DNS 名称和“名称”标签get-ec2instance

$instances = foreach($i in (get-ec2instance)) '
{ $i.RunningInstance | Select-Object InstanceId, PublicDnsName, Tag }

这是输出:

InstanceId                              PublicDnsName                     Tag
----------                              -------------                     ---
myInstanceIdHere                        myPublicDnsName                   {Name}
...                                     ...                               {Name}

我希望能够{Name}使用上面的代码行访问并在此输出中打印其值。自从首次发布以来,我做了一些研究,发现...

PS C:\Users\aneace\Documents> $instances[0].Tag.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     List`1                                   System.Object

在这和 AWS 文档之间,我认为 Tag 指的是这个 list,但我不确定。我可以通过调用来访问打印键和值列的表$instances[0].Tag,但我现在的问题是我希望它Value成为我的第一个表而不是{Name}对象的输出。有什么建议么?

4

2 回答 2

6

根据文档,该Tag属性是对象列表Tag所以一般来说,那里会存储多个键/值。您是否假设在您的情况下只有 1 个?

Select-Object不仅可以获取原始属性值,还可以获取计算值。假设您只想要列表中对象的Values的逗号分隔Tag列表。以下是您的操作方法:

$instances = Get-EC2Instance `
             |%{ $_.RunningInstance } `
             | Select-Object InstanceId,PublicDnsName,@{Name='TagValues'; Expression={($_.Tag |%{ $_.Value }) -join ','}}

的元素$instances现在将具有一个属性,该属性TagValues是一个字符串,由Value与该实例关联的所有标签组成。

于 2013-08-07T17:05:04.687 回答
0

以下是如何将标签与其他属性一起提取到平面对象中

$region = 'us-west-2'
$instances = (Get-Ec2Instance -Region $region).Instances | select `
    @{Name="ServerName";Expression={$_.tags | where key -eq "Name" | select Value -expand Value}},`
    InstanceType ,`
    InstanceId,`
    ImageId,`
    @{Name="Role";Expression={$_.tags | where key -eq "Role" | select Value -expand Value}},`
    @{Name="Group";Expression={$_.tags | where key -eq "Group" | select Value -expand Value}},`
    @{Name="Subsystem";Expression={$_.tags | where key -eq "subsystem" | select Value -expand Value}},`
    @{Name="State";Expression={$_.State.Name}},`
    @{Name="Region";Expression={$region}}

$instances | Sort-Object -Property State, ServerName | Format-Table
于 2020-06-22T03:06:02.500 回答