2010-11-29 187 views
1

获得单个用户所属的所有组的最干净(最快)的方式是什么? 我使用PowerShell 2.0对Citrix中的登录用户进行计数,并将它们从Active Directory中划分为多个组。所有用户都是“VDI-Billing”组中的一个子组的成员,但用户与VDI-Billing组之间的嵌套组数量并不总是相同。因此,我希望能够将所有组(包括嵌套组)与VDI-Billing组(第1级)中的成员列表进行比较,以便获得总览。使用PowerShell获取AD组成员身份

实施例:

VDI-帐单有一个成员组NL-VDI-T的系统。这有多个组(它们自己有多个组)。但概述必须包括NL-VDI-T-Systems的所有用户(子)成员。因此,在概述

我应该得到: NL-VDI-T-Systems公司:22 ITA-VDI-T-Systems公司:25 等等。

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

回答

2

我们编写的脚本始终在我的工作中做到这一点!通过Quest ActiveRoles管理工具,可以更轻松地在Powershell WAY中处理Active Directory对象的自由管理单元。

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

这对我来说就像是一种魅力。如果您有任何问题,请告诉我!

〜丹

+0

其实,命令是 “GET-QADUser '域\用户' |的foreach - 方法{$ _的memberOf,$ _ nestedmemberof。}”。对于那个很抱歉! – thoughtpunch 2010-12-13 13:42:53

0

做到这一点是采取TokenGroups的有利属性,而不是执行对自己的递归扩展的最好方法。你可以找到例子herehere

编辑:A more succinct example