如何根据名称匹配过滤对象?

Jac*_*vin 3 powershell

我要返回很多想要过滤的数据.酒店的名称包含此信息.我习惯于基于过滤| ? {$_.Name -eq 'Value'}.我希望能够使用隐藏.pscustomobject更动态地执行此操作.

$x = [pscustomobject]@{
   atruevalue = 'sometext'
   afalsevalue = 'sometext'
}

$x | ?{$_.psobject.Properties.Name -like '*true*'}
Run Code Online (Sandbox Code Playgroud)

我希望这会回来:

> atruevalue
> ----------  
> sometext
Run Code Online (Sandbox Code Playgroud)

但是,它只返回对象中的每个项目.

有谁能解释这种行为?

Bru*_*tte 5

如果你真的想要过滤属性,那么移动一下就可以了.这看起来像:

$x.psobject.Properties | ? {$_.Name -like '*true*'}
Run Code Online (Sandbox Code Playgroud)

如果您只想要值而不是属性,那么将另一个阶段添加到管道:

$x.psobject.Properties | ? {$_.Name -like '*true*'} | % Value
Run Code Online (Sandbox Code Playgroud)