不确定这是否可行,但我试图比较ADgroup对象和PSCustomObject对象的属性。我们正处于用户审核阶段,需要根据我们的有效AD用户帐户及其AD群组成员身份验证活动员工列表。这是我到目前为止的基本细分:
(我们正在定义两个单独的搜索路径,因为我们在不同的OU中有组)
人力资源系统的用户名列表
AD的用户名列表
用于存储自定义对象/属性的空数组
将HR与AD进行比较
$ compareResults = compare-object -referenceobject $ sourceUsers -differenceObject $ ADUserName
查找所有匹配用户的组成员资格,创建自定义对象等
foreach ($result in $compareResults) {
if ($result.SideIndicator -eq '==') {
$groupMem = get-adprincipalgroupmembership -identity $result.InputObject
}
$userObjEQ += [pscustomobject] @{
'UserName' = $result.InputObject
'Groups' = $groupMem.Name
}
}
从现在开始,我想将每个匹配用户的每个组与$ mainGroups中的组名进行比较,看看是否匹配。如果没有,则将其与$ subGroups组名称进行比较。如果匹配不执行任何操作,如果存在不匹配,请输出用户名以及任何不匹配的组名。只是不确定如何最好地比较这些对象。任何提示将不胜感激。
答案 0 :(得分:1)
如果你的组是数组,那么使用-contains运算符 - 如果它们不是,则使它们成为数组:
foreach ($u in $users) {
foreach ($groupdn in $u.memberof) {
if ($mainGroups -contains $ug -or $subGroups -contains $ug) {
## do something when the users' group exists in the checked sub-groups
}
}
}
...这假设$ maingroups数组是一个组DN的数组......