所有 Active Directory 用户和每个用户所属的所有组的输出列表

Output list of all Active Directory users and all groups each user is a member of

我正在尝试查询 Active Directory 以获取所有用户和每个用户所属的所有组的列表。我只需要每个用户所属的直接组,而不是嵌套组。最终目标是将此列表输出到 CSV 文件。我正在尝试在 Windows Server 2012 R2 中使用 PowerShell 执行此操作。

更新

所以我现在已经设法输出所有用户名的列表,但是输出中只包含一些用户组,使用以下命令:

Get-ADuser -LDAPFilter "(objectClass=user)" -property "memberOf" | 
select -Property @{n='name';e={$_.name}},@{n='groups';e
{$($_.MemberOf | Get-adgroup | % {$_.name}) -join ','}}

我无法确定为什么只有 一些 的用户输出(可能总共只有 5-10 个)包括用户所属的组,而其余的( 95%) 的用户输出只显示用户名,根本没有任何组。

这里有什么想法吗?

首先恐怕Get-ADuser -Filter {group -eq 'Domain Users'}什么都不给。

您可以尝试开始:

Get-ADuser -LDAPFilter "(objectClass=user)" -property "memberof" | select -Property @{n='name';e={$_.SamAccountName}},@{n='groups';e={$_.MemberOf -join ','}}

然后您可以修改过滤器以也使用 InetOrgPerson。

Get-ADuser -LDAPFilter "(|(objectClass=user)(objectClass=inetOrgPerson))" -property "memberof" | select -Property @{n='name';e={$_.SamAccountName}},@{n='groups';e={$_.MemberOf -join ','}}

然后可以取群DN的samAccountName

Get-ADuser -LDAPFilter "(|(objectClass=user)(objectClass=inetOrgPerson))" -property "memberof" | select -Property @{n='name';e={$_.SamAccountName}},@{n='groups';e={$($_.MemberOf | Get-adgroup | % {$_.SamAccountname}) -join ','}}

晚回复此 post,但我构建了一个脚本,输出特定 OU 中的所有组和每个组的所有用户。唯一的缺点是每个组的 "owner" 也是一个成员,所以有一点冗余,但对我的目的来说没有任何破坏。输出被格式化为两列。

$mGroups=@(
Get-ADGroup -filter * -SearchBase "OU=,OU=,OU=,DC=,DC=" | select name);


$col = @()
for ($i=0
 $i -lt $mGroups.Count;
 $i++)
 {
      $agents=@(
      Get-ADGroupMember $mGroups[$i].name | select sAMAccountName)

        for ($n=0
             $n -lt $agents.Count;
             $n++)
             {
              $agentList = [PSCustomObject]@{
              Group = $mGroups[$i].name 
              Agents = $agents[$n].sAMAccountName
             }
            $col+=$agentList;
             }
   }          
$col
$col | Export-CSV -NoTypeInformation C:\Path\to\file.type