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

mea*_*our 1 powershell cmdlets powercli powershell-4.0

我正在运行一个PS命令get-Keyproperty,它以下面的表格格式返回结果"

Key                  Label                          Policy     Running  Required
---                  -----                          ------     -------  --------
abc                 UI                               on         True     False  
efg                 UI                               off        True     False 
Run Code Online (Sandbox Code Playgroud)

我想检索Policy其中的值on

如何检索Policy价值abc Key

我正在跑,get-Keyproperty | Select-Object abc但它不起作用.

Pax*_*axz 5

获得Policy尝试运行的价值

Get-Keyproperty | Select-Object -ExpandProperty Policy
Run Code Online (Sandbox Code Playgroud)

即使上面的命令是推荐的方法,你也可以得到相同的结果(Get-Keyproperty).Policy.

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

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

  1. 选择表格中其位置的条目

    (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.