【发布时间】:2019-04-30 14:46:44
【问题描述】:
我有一个用户列表和一个 AD 组列表。我想知道,是否有任何用户是这些组的成员。
- 我不需要知道哪些成员是哪个组的成员。
- 我只需要知道是否有任何用户匹配组,如果匹配存在 输出找到的匹配和组名。
我有这个代码:
$users = Get-Content C:\test\testusers.csv
$groups = Get-Contect C:\test\testgroups.csv
foreach ($user in $users) {
foreach ($group in $groups) {
$members = Get-ADGroupMember -Identity $group -Recursive |
Select -ExpandProperty SamAccountName
if ($members -contains $user) {
Write-Host "Match Found $group"
}
}
}
我已经针对 4 个用户和 3 个广告组进行了测试,而这满足了我的需求。我得到了输出:
- 匹配找到的组名 1
- 匹配找到的组名 2
- 匹配找到的组名 1
我的理解是,这是针对所有组扫描每个用户,然后针对所有组扫描下一个用户。虽然这对我的少量测试批次有效,但我需要针对 1100 个组扫描 2000 个用户。
我认为这是因为我正在根据组扫描用户?并且需要为用户扫描组?
有没有办法让我写一行代码,如果找到就移到下一组?
【问题讨论】:
标签: powershell active-directory active-directory-group