根据对象的值在对象中搜索未知 属性
Search for a unknown property in an object based on its value
我不确定如何处理常见的嫌疑人,即 Where-Object
或 Select-Object
。
假设我想在 PSCustomObject $Object
中找到字符串 "needle",并且该对象可以有多个 Note 属性,例如 $Object.Haystack1
、$Object.Haystack2
等等..
在我的例子中,音符属性的数量是已知的并且是固定的,但我想知道当你不知道有多少时,如何处理更难的情况您的对象具有的属性。
我四处寻找 Select
/Where-Object
和操作员 -in
,但没能做出一个简单、优雅的衬垫来完成这项工作。
$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'}
一种可能:
$obj = [pscustomobject]@{'Haystack1'='test';'Haystack2'='needle'}
@($obj | Format-List *| Out-String).split("`n") -like '*needle*'
Haystack2 : needle
$obj = [PSCustomObject]@{"Haystack1" = "test"; "Haystack2" = "needle"}
$obj.PSObject.Properties | ? { $_.Value -eq "needle" }
我不确定如何处理常见的嫌疑人,即 Where-Object
或 Select-Object
。
假设我想在 PSCustomObject $Object
中找到字符串 "needle",并且该对象可以有多个 Note 属性,例如 $Object.Haystack1
、$Object.Haystack2
等等..
在我的例子中,音符属性的数量是已知的并且是固定的,但我想知道当你不知道有多少时,如何处理更难的情况您的对象具有的属性。
我四处寻找 Select
/Where-Object
和操作员 -in
,但没能做出一个简单、优雅的衬垫来完成这项工作。
$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'}
一种可能:
$obj = [pscustomobject]@{'Haystack1'='test';'Haystack2'='needle'}
@($obj | Format-List *| Out-String).split("`n") -like '*needle*'
Haystack2 : needle
$obj = [PSCustomObject]@{"Haystack1" = "test"; "Haystack2" = "needle"}
$obj.PSObject.Properties | ? { $_.Value -eq "needle" }