根据对象的值搜索对象中的未知属性

Blu*_*luz 3 string powershell search psobject

我不知道如何用通常的嫌疑人这样做,即Where-ObjectSelect-Object.

假设我想在PSCustomObject中找到字符串"needle" $Object,并且该对象可以有几个Note属性,例如$Object.Haystack1,$Object.Haystack2等等.

在我的情况下,注释属性的数量是已知的并且是固定的,但是当你不知道对象有多少属性时,我想知道如何处理更难的情况.

我和Select/ Where-Object和操作员一起探索,-in但没有设法制作一个简单,优雅的衬里来完成这项工作.

Tes*_*ler 7

$obj = [pscustomobject]@{'Haystack1'='test';'Haystack2'='needle'}

$noteProperties = $obj|get-member -MemberType NoteProperty | select -ExpandProperty name
$noteProperties | Where {$obj."$_" -match 'needle'}
Run Code Online (Sandbox Code Playgroud)

你可以用它来表达它

$obj|gm -M NoteProperty|?{$obj."$($_.Name)"-match'needle'}
Run Code Online (Sandbox Code Playgroud)