$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"在我的命令中?
答案 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