所有 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
我正在尝试查询 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