Вот одно решение; это не самый изящный, но, надеюсь, решит вашу проблему:
для вашего Use Case
Get-EC2Instance | `
%{
$x = $.RunningInstance;
$x.Tag | select-object
@{Name="InstanceId"; Expression={$x.InstanceId}}
,@{Name="LaunchTime"; Expression={$x.LaunchTime}}
,@{Name="Value"; Expression={$_.Value}}
,@{Name="Key"; Expression={$_.Key}};
}
Simple Demo
cls
$x = @(
(New-Object –TypeName PSObject –Prop @{Name='one';[email protected]('a','b','c');})
,(New-Object –TypeName PSObject –Prop @{Name='two';[email protected]('d','e','f');})
,(New-Object –TypeName PSObject –Prop @{Name='three';[email protected]('g','h','i');})
,(New-Object –TypeName PSObject –Prop @{Name='four';[email protected]('j','k','l');})
,(New-Object –TypeName PSObject –Prop @{Name='five';[email protected]('m','n','o');})
)
#show what the preparation code produced:
#$x | select Name, List
#show the output we're after
$x | %{$n=$_.Name; $_.List | select @{Name="Name";Expression={$n}},@{Name="ListValue";Expression={$_}}}
Привет то не решить мою проблему. $ x.Tag не содержит значений экземпляра и запуска. – minisch
@minisch затем сделайте простое изменение для вашей отладки. Этот ответ имеет правильный логический подход к вашей проблеме. – Matt
@minisch: код не принимает 'InstanceId' или' LaunchTime' из '$ x.Tag', но из' $ x' напрямую. Подойдите ближе, и вы увидите значение и ключ из '$ _', который представляет' $ x.Tag', в то время как 'InstanceId' и' LaunchTime' поступают из '$ x'. – JohnLBevan