我不能在 @{name 别名之后在管道中使用 WHERE 吗?
我必须在输出中使用自定义列标题,因此我使用 @{name 语法。稍后在管道中,排序使用我为其指定的别名进行,但 WHERE 子句不工作。我尝试过返回原始 $_. 变量名,但它们似乎也不起作用。当我删除 WHERE 子句时,我得到了带有别名标题的输出。
示例:没有 @{Name 别名,但 WHERE 有效
PS C:\> Get-WmiObject Win32_operatingsystem | select version,BuildNUmber | where { $_.buildnumber -eq 3790} | sort version
version BuildNUmber
------- -----------
5.2.3790 3790
带别名和 WHERE 的 EXAMPLE 不起作用
Get-WmiObject Win32_operatingsystem | select @{Name="Ver";Expression={$_.version}}, @{Name="Build";Expression={$_.BuildNUmber}} | where { "build" -eq 3790} | sort "ver"
EXAMPLE 带有别名且没有 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
所以理想情况下,我希望能够将@{name 与 WHERE 子句一起使用。
答案1
你有一个语法缺陷:
where { "build" -eq 3790}
上述语句的功能与以下内容相同:
where { $false }
无论你用管道传送什么,它都不会返回任何内容。
将其更改为
where { $_.Build -eq 3790 }