Powershell选择对象格式

时间:2014-05-27 13:38:25

标签: powershell

$output = $data | Where-Object {$_.Name -eq "$serverName"} | Select-Object -Property Description1,Version | Where-Object {$_.Description1 -eq "Power controller Firmware"} | Select-Object -Property Version  

Write-Host $output

给我以下输出:

    @{Version=3.4}

所以$ data是一个数组,我选择我想要的形式并将其分配给一个变量,最终输入到一个excel文件中,但无论我怎样尝试,我都不能选择" 3.4&# 34;相反,它选择如上所述(@ {Version = 3.4})。没有人知道如何选择" 3.4"在我的命令中?

3 个答案:

答案 0 :(得分:1)

只需将最后一行替换为:

foreach( $out in $output )
{
Write-Host $out.Version
}

实际上你的$ output变量包含一个数组,因此你需要使用foreach循环来完成它。 然后你可以Write-Host或对版本属性做任何事情。

正如@okaram所说,如果你想进行相同类型的循环,但是在管道之后你可以这样做:

$output | ForEach-Object {Write-Host $_.Version}

$output | %{Write-Host $_.Version}

答案 1 :(得分:0)

你的最后一个表达

Select-Object -Property Version

将整个对象保留在管道中,但将属性过滤为仅版本。但是,-ExpandProperty会将属性值本身放在管道中。

Select-Object -ExpandProperty Version

应该返回" 3.4"结果你期待。

答案 2 :(得分:0)

请尝试以下代码:

$data | Where-Object {$_.Name -eq "$serverName"} | Select-Object -Property 
Description1, Version | Where-Object {$_.Description1 -eq "Power controller
Firmware"} | write-Host $_.Version