Powershell - 查找属于多个 AD 组的用户

cha*_*zjo 3 powershell active-directory

我是 AD 和 Powershell 的新手,所以如果我使用了错误的术语,请原谅我。

我有一系列名为“ABC-something”的 50 多个 Active Directory 组。每个活跃用户都需要完全属于一个组。用户也是用于不同目的的其他组的成员,不应影响此练习。

由于我们正处于重大举措之中,我的人口是一个不断变化的目标。我正在处理大约 1000 个用户,因此导出所有用户的所有成员资格并不理想。

我希望能够编写一个脚本,该脚本将返回属于多个 ABC* 组的每个用户的用户 ID(或 samAccountName),我可以按需运行。(我假设编写一个脚本来查找不在组中的活动 AD 用户是一个完全不同的问题。)

戴上我的数据库帽子,我看到的逻辑如下:

1) 遍历所有名为 ABC* 的组。对于每个人,捕获所有组成员。我应该在内存中得到一个表或对象看起来像

Group1 PersonA
Group1 PersonB
Group2 PersonB

2)找到一种方法来对这个列表进行分组、计数或迭代。

这就是我卡住的地方,因为到目前为止我看到的 Powershell 示例在导出或显示数据之前并没有对数据进行太多操作。

您能否建议一个示例脚本来帮助我入门,或者至少指向有关在 Powershell 中操作数据的在线资源?

Zor*_*che 5

UsingGet-ADUser -Filter * -Properties memberOf获取所有用户的列表,以及他们所属的组。

您可以将其导入 foreach 或 where-object 并应用任何所需的标准。如果您想知道用户是否在 foo 和 bar 中,您可以运行这样的命令。

Get-ADUser -Filter * -Properties memberOf | `
Where-Object {
    $_.memberof.contains('CN=foo,OU=allsites,DC=example,DC=org') -and `
    $_.memberof.contains('CN=bar,OU=allsites,DC=example,DC=org' ) 
}
Run Code Online (Sandbox Code Playgroud)

或者假设您只想知道至少 7 个组中有多少人?

Get-ADUser -Filter * -Properties memberOf | `
Where-Object {$_.memberof.count -ge 7}
Run Code Online (Sandbox Code Playgroud)