从 AD 组中获取特定的 AD 用户

Get Specific AD Users from AD Group

我需要从 Active Directory 中的特定组获取特定用户。

到目前为止我有这个:

$Groupnames = get-adgroup -Filter "name -like '$Groupfilter'" -Properties * -SearchBase $Grouppath |
    Select-Object Name, @{
        Name='Username';
        Expression={
            Get-ADGroupMember -identity $($_.Name) -Recursive |
            Get-ADUser -Property SamAccountName |
            Select -ExpandProperty SamAccountName
        }
    }

这可以获取带有名称的组。现在我想从这些组中获取所有用户。什么有效,但格式完全关闭。我想要这个:

Name                               Username                                                                                
----                               --------                                                                                
Group1                             user1adm                                                                             
Group2                             {user1adm, user1, user2, user2adm...}                                      
Group3                             {user1adm, user3, user2adm, user6...}

但我明白了:

{user1adm, user1, user2, user2adm...}

使用这种格式我看不到所有用户。

我最后的目标也是排除以adm结尾的用户,但我不知道该怎么做。

你能帮帮我吗?

Get-ADGroupMember 可以 return 类型为 'user'、'group' 或 'computer' 的对象,因此将 returned 对象直接通过管道传递到Get-ADUser 如果其中一个对象不是用户,可能会给您带来麻烦。

话虽如此,从 Get-ADGroupMember 编辑的对象 return 已经包含您要查找的 SamAccountName 属性,因此您可以从代码中删除 Get-ADUser。

$Groupnames = Get-ADGroup -Filter "name -like '$Groupfilter'" -SearchBase $Grouppath | 
                Select-Object Name, 
                @{Name = 'Username'; Expression = { 
                        ($_ | Get-ADGroupMember -Recursive | 
                              Select-Object -ExpandProperty SamAccountName | 
                              Where-Object { $_ -notmatch 'adm$' } 
                        ) -join ', '
                    }
                }

# output the result on screen
$Groupnames | Format-Table -AutoSize

# output to CSV file
$Groupnames | Export-Csv -Path 'Path\To\The\GroupMembers.csv' -NoTypeInformation