我无法理解如何通过属性检查数组中是否存在对象成员。
我有以下对象:
PS> $siteUser
Id Title LoginName Email
-- ----- --------- -----
1305 cinuwyl@banit.club i:0#.f|membership|urn%3aspo%3aguest#cinuwyl@banit.club cinuwyl@banit.club
我想检查数组中是否存在属性membership
中的字符串LoginName
:
federateddirectoryclaimprovider
tenant
membership
通过指定membership
的数组索引,我只获得了匹配:
$siteUsers.LoginName | Where-Object {$_ -match $inclusionObjects[2]}
但是,这要求我事先知道匹配字符串的数组索引。
我尝试过的另一件事是没有结果:
$siteUsers | Where-Object {$inclusionObjects | ForEach-Object {$_ -match $_.LoginName}}
有没有一种方法可以遍历数组中的每个项目?
答案 0 :(得分:0)
要检查列表中是否有任何单词与$siteUsers.LoginName
相匹配,可以使用以下命令:
$siteUsers = [pscustomobject]@{
Id=1305;
Title='cinuwyl@banit.club';
LoginName='i:0#.f|membership|urn%3aspo%3aguest#cinuwyl@banit.club';
Email='cinuwyl@banit.club'
}
$inclusionObjects = [string[]]'federateddirectoryclaimprovider','tenant','membership'
$predicate = [Func[string,bool]]{$siteUsers.LoginName.Contains($args[0])}
[System.Linq.Enumerable]::Any($inclusionObjects, $predicate)