1

获取单个用户所属的所有组的最干净(和最快)的方法是什么。我使用 PowerShell 2.0 对 Citrix 中的登录用户进行计数,并将它们从 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等等。

有人知道一个巧妙的小技巧吗?

4

2 回答 2

2

我们编写的脚本一直在我的工作中执行此操作!借助 Quest ActiveRoles 管理工具,这是一个免费的管理单元,可以更轻松地在 Powershell 中使用 Active Directory 对象。

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

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

~丹

于 2010-12-11T16:42:39.197 回答
0

最好的方法是利用 TokenGroups 属性,而不是自己执行递归扩展。您可以在此处此处找到示例。

编辑:一个更简洁的例子

于 2012-01-01T18:58:17.753 回答