PS C:\> Get-EC2Instance |%{ $_.RunningInstance } | Select-Object InstanceId,ImageID,@{Name='TagValues'; Expression={ ($_.Tags |%{ $_.Value }) }}
InstanceId ImageId TagValues
---------- ------- ---------
i-230151d5 ami-20224b10 Scott
i-8c80f27a ami-e7527ed7 {landscape123, test123}
i-3d3195cb ami-0b5f073b temp
如何修改我的命令,只有" landscape *"过滤并显示?
InstanceId ImageId TagValues
---------- ------- ---------
i-8c80f27a ami-e7527ed7 landscape123
答案 0 :(得分:3)
在某些情况下,Tags
属性看起来包含多个值。像这样更改您的计算属性以将其限制为单个值:
@{Name='TagValues'; Expression={$_.Tags | select -Expand Value | select -First 1}}
并添加过滤器以将结果限制为具有特定标记值的对象:
Get-EC2Instance |
select -Expand RunningInstance |
select InstanceId, ImageID,
@{n='TagValues';e={$_.Tags | select -Expand Value | select -First 1}} |
? { $_.TagValues -eq 'landscape123' }
如果要为实例保留多个标记,请执行以下操作:
Get-EC2Instance |
select -Expand RunningInstance |
select InstanceId, ImageID,
@{n='TagValues';e={$_.Tags | select -Expand Value}} |
? { @($_.TagValues) -contains 'landscape123' }
如果您需要对其中一个代码进行部分匹配,请执行以下操作:
Get-EC2Instance |
select -Expand RunningInstance |
select InstanceId, ImageID,
@{n='TagValues';e={$_.Tags | select -Expand Value}} |
? { $_.TagValues | ? { $_ -like 'landscape*' } }