我已经开始设置群组,例如:
- 部门人员
- 部门主管
- 系主任
- 部门主管
其中 Department-supervisors 是 Department-staff 的成员,Department-director 是 Department-supervisors 的成员。
我知道如何使用 powershell 列出一个人所属的组,直接分配的或通过嵌套组继承的。
但是我想弄清楚的是一个脚本,它将直接和间接地向我展示属于这些组之一的所有用户,例如。用户A是部门职员和部门主管的直属成员。
我的谷歌搜索使我无法找到或编写可以执行此操作的脚本。
编辑:
实际上,嵌套的层次和分支更多,部门也更多,因此变得混乱。我想获得直接属于任何组的成员列表,以及间接属于同一组的成员,这样我就可以删除多余的组直接成员资格。
以下将遍历给定的父组(名称必须与
Get-ADGroupMember
语法兼容)并填充两个哈希。一个散列将以用户 sAMAccountName 作为键,将一组直接组成员身份作为值。第二个哈希将包含所有已处理组的键。它将正确检测并跳过循环组嵌套(例如,父项是子项的子项)。您可以在控制台中注释掉
Write-Host
线路以减少线路噪音。编辑:根据您更新的描述,这样的事情应该有效。请注意,我没有处理组成员身份中的循环,因此您可能会发现它一直在运行。