3

我不确定如何处理通常的嫌疑人,即Where-Objector Select-Object

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

在我的例子中,音符属性的数量是已知的并且是固定的,但是当你不知道你的对象有多少属性时,我想知道如何处理更困难的情况。

Select我与/Where-Object和操作员一起四处-in寻找,但没有设法制作出一个简单、优雅的班轮来完成这项工作。

4

3 回答 3

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

$noteProperties = $obj|get-member -MemberType NoteProperty | select -ExpandProperty name
$noteProperties | Where {$obj."$_" -match 'needle'}

你可以单线它

$obj|gm -M NoteProperty|?{$obj."$($_.Name)"-match'needle'}
于 2016-06-28T21:14:42.557 回答
4

一种可能:

$obj = [pscustomobject]@{'Haystack1'='test';'Haystack2'='needle'}
@($obj | Format-List *| Out-String).split("`n") -like '*needle*'

Haystack2 : needle
于 2016-06-28T21:25:34.043 回答
0
$obj = [PSCustomObject]@{"Haystack1" = "test"; "Haystack2" = "needle"}
$obj.PSObject.Properties | ? { $_.Value -eq "needle" }
于 2016-10-28T23:50:53.120 回答