【发布时间】:2017-11-09 02:20:40
【问题描述】:
不确定这是否可能,但我正在尝试比较 ADgroup 对象和 PSCustomObject 对象的属性。我们正在进行用户审核,需要根据我们的活动 AD 用户帐户及其 AD 组成员身份验证活动员工列表。以下是我目前所拥有的基本分类:
(我们定义了两个独立的搜索路径,因为我们在不同的 OU 中有组)
- $mainGroups = get-adgroup -filter * -searchbase 'OU_here'
- $subGroups = 获取广告组过滤器 * -searchbase 'Different_OU_here'
人力资源系统用户名列表
- $sourceUsers = get-content -path 'c:\temp\users.txt'
来自 AD 的用户名列表
- $ADUserName = get-aduser -filter * -searchbase 'User_OU' -searchscope 子树 |选择 -expandproperty SamAccountName
用于存储自定义对象/属性的空数组
- $userObjEQ = @()
将 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 组名称进行比较。如果匹配则什么都不做,如果不匹配,则输出用户名以及任何不匹配的组名。只是不确定如何最好地比较这些对象。任何提示将不胜感激。
【问题讨论】:
-
所以你有一个用户列表。您想获取每个用户所在的 ADGroups 吗?
-
@ArcSet 不,抱歉,我有一份来自人力资源部门的活跃用户列表。我已将该列表中的用户名存储到 sourceUsers 变量中。然后我从活跃的 AD 用户那里获取了一个用户名列表。我比较两个列表并仅提取匹配的用户名。我从那里做的是抓取每个匹配用户所属的所有组的列表。我现在要做的是弄清楚如何将每个匹配的用户组与 $mainGroups 和 $subGroups OU 中找到的组进行比较。对不起,如果我解释得不好。
标签: powershell