使用PowerShellrecursion地获取AD组成员资格

获得单个用户所属的所有组的最干净(最快)的方式是什么? 我使用PowerShell 2.0对Citrix中的login用户进行计数,并将其从Active Directory中分组。 所有用户都是“VDI-Billing”组中的一个子组的成员,但用户与VDI-Billing组之间的嵌套组数量并不总是相同。 所以我希望能够得到所有组(包括嵌套的)与VDI-Billing组(第一级)的成员列表进行比较,所以我得到一个概述。

例:

VDI-Billing有一个NL-VDI-T-Systems成员组。 这有多个组(自己有多个组)。 但是概述必须包括NL-VDI-T-Systems的所有用户(子)成员。

因此,在总览中我应该得到:NL-VDI-T-Systems:22 ITA-VDI-T-Systems:25等等。

任何人都知道一个整洁的小动作?

我们编写的脚本一直在做我的工作! 通过Quest ActiveRoles管理工具,可以更轻松地使用Powershell WAY中的Active Directory对象进行自由管理。

  1. 从Quest安装免费的Quest ActiveRoles管理工具
  2. 将PSSnapin添加到您的配置文件中,以便您可以从控制台访问所有Powershell AD工具 – Add-PSSnapin Quest.ActiveRoles.ADManagement 。 如果要编写使用AD工具的scipt,只需将该命令添加到脚本的第一行即可。
  3. 运行以下命令以获取用户所属的所有直接和嵌套组: Get-QADUser 'DOMAIN\USER' | foreach -Process {$_.memberof, $_.nestedmemberof} Get-QADUser 'DOMAIN\USER' | foreach -Process {$_.memberof, $_.nestedmemberof}可以通过在命令末尾添加Out-CSVOut-File cmdlet来将其管理为文本文件或CSV。

这对我来说就像一个魅力。 让我知道如果你有任何问题!

〜丹

最好的方法是利用TokenGroups属性,而不是自己执行递归扩展。 你可以在这里和这里找到例子。

编辑: 一个更简洁的例子