如何从 PS 输出中过滤掉特定值

How to filter out a particular value from PS output

我是 运行 一个 PS 命令 get-Keyproperty,它以下面的 table 格式返回结果

Key                  Label                          Policy     Running  Required
---                  -----                          ------     -------  --------
abc                 UI                               on         True     False  
efg                 UI                               off        True     False 

我想检索 Policy 的值,即 on

如何检索 abc KeyPolicy 值?

我是 运行 get-Keyproperty | Select-Object abc 但它不起作用。

要获取 Policy 的值,请尝试 运行

Get-Keyproperty | Select-Object -ExpandProperty Policy

尽管上面的命令是推荐的方式,但您也可以使用 (Get-Keyproperty).Policy.

获得相同的结果

如果你想检查值是否匹配 "on" 只需做 (Get-Keyproperty | Select-Object -ExpandProperty Policy) -eq "on"

如果您想要某个条目的 Policy 值,您可以:

  1. 选择条目在 table

    中的位置

    (Get-Keyproperty | Select-Object -ExpandProperty Policy)[0]

  2. 或者找到它超过它的值 Key

    Get-Keyproperty | Where-Object {$_.Key -eq "abc" } | Select-Object -ExpandProperty Policy

    如评论中所述,同一命令的更短方式是

    (Get-Keyproperty | ? Key -eq "abc").Policy

    ? 是一个别名 (Get-Alias ?) 并且 {script block} 仅对于更复杂的表达式是必需的,然后需要 $_.Key$PSItem.Key(在PSv3中引入)表示法;这两者都是管道中当前对象的同义词。见 Get-Help Where-Object.