Powershell – 在@ {name别名不返回任何东西之后使用WHERE子句

在@ {名称别名之后,我不能在pipe道中使用WHERE吗?

我必须在我的输出中使用自定义列标题,所以我使用@ {名称语法。 后来在pipe道中,sorting工作使用我给它的别名,但WHERE子句不。 我试过回到原来的$ _。 variables名称,但他们似乎也没有工作。 当我拿出WHERE子句时,我得到了我的输出与别名标题。

没有@ {名称别名和WHERE的作品

PS C:\> Get-WmiObject Win32_operatingsystem | select version,BuildNUmber | where { $_.buildnumber -eq 3790} | sort version version BuildNUmber ------- ----------- 5.2.3790 3790 

具有别名和WHERE的示例不起作用

 Get-WmiObject Win32_operatingsystem | select @{Name="Ver";Expression={$_.version}}, @{Name="Build";Expression={$_.BuildNUmber}} | where { "build" -eq 3790} | sort "ver" 

具有别名和NO WHERE的示例获取输出。 SORT使用别​​名,也可以工作。

 PS C:\> Get-WmiObject Win32_operatingsystem | select @{Name="Ver";Expression={$_.version}}, @{Name="Build";Expression={$_.BuildNUmber}} | sort "ver" Ver Build --- ----- 5.2.3790 3790 

所以理想情况下,我想能够使用@ {名称与WHERE子句..

你有一个语法缺陷:

 where { "build" -eq 3790} 

以上声明在function上与以下内容相同:

 where { $false } 

不pipe你input什么,它都不会返回任何东西。

将其更改为

 where { $_.Build -eq 3790 }