导出具有特定组列表的 AD 用户
Export AD users with list of specific groups
我一直在尝试提取 AD 用户和 select mail
、name
、memberof
。然后我只需要列出 memberof
输出中的特定组,所以我最终得到每个用户的列表,其中包含他们的姓名、电子邮件地址和与特定名称匹配的特定组,而不是他们所属的所有组成员.
Get-ADUser username -Properties memberof | Select-Object memberof
我似乎找不到执行此操作的方法,因为我最终得到的是上面的 noteproperty 或空管道。有没有办法实现我想要做的事情?
memberOf
属性包含一个 distinguishedName
(DN) 值列表,每个值对应一个组。
在 运行 Get-ADUser
之前检索您感兴趣的群组,这样您就可以将群组 DN 与 memberOf
:
中的条目进行比较
$GroupDNs = Get-ADGroup -Filter {Name -like "*finance*" -or Name -like "*creditcontrol*"} | Select-Object -ExpandProperty DistinguishedName
现在,您可以使用这些 DN 通过计算的 属性 过滤组成员资格,如下所示:
$UserInfo = foreach($username in @("bob","alice","joe")){
$User = Get-ADUser -Identity $username -Properties mail,memberOf |Select Name,mail,memberof
$User | Select-Object Name,mail,@{Label="GroupDNs";Expr = {$_.memberof | Where-Object {$Groups -contains $_}}}
}
无需为每个 memberof
条目执行新的 Get-ADGroup
查询。
如果您想要一组名称的字符串,而不是包含字符串数组的 NoteProperty,您可以将组填充到哈希表中,然后将其用于 "look up" memberof
条目,使用ContainsKey()
方法:
$Groups = @{}
Get-ADGroup -Filter {Name -like "*finance*" -or Name -like "*creditcontrol*"} | ForEach-Object {
$Groups[$_.DistinguishedName] = $_
}
$UserInfo = foreach($username in @("bob","alice","joe")){
$User = Get-ADUser -Identity $username -Properties mail,memberOf |Select Name,mail,memberof
$User | Select-Object Name,mail,@{Label="Groups";Expr = { ($_.memberof | Where-Object {$Groups.ContainsKey($_)} | ForEach-Object { $Groups[$_].Name}) -join ";" }}
}
$UserInfo | Export-Csv C:\aduserinfo.csv -NoTypeInformation
我一直在尝试提取 AD 用户和 select mail
、name
、memberof
。然后我只需要列出 memberof
输出中的特定组,所以我最终得到每个用户的列表,其中包含他们的姓名、电子邮件地址和与特定名称匹配的特定组,而不是他们所属的所有组成员.
Get-ADUser username -Properties memberof | Select-Object memberof
我似乎找不到执行此操作的方法,因为我最终得到的是上面的 noteproperty 或空管道。有没有办法实现我想要做的事情?
memberOf
属性包含一个 distinguishedName
(DN) 值列表,每个值对应一个组。
在 运行 Get-ADUser
之前检索您感兴趣的群组,这样您就可以将群组 DN 与 memberOf
:
$GroupDNs = Get-ADGroup -Filter {Name -like "*finance*" -or Name -like "*creditcontrol*"} | Select-Object -ExpandProperty DistinguishedName
现在,您可以使用这些 DN 通过计算的 属性 过滤组成员资格,如下所示:
$UserInfo = foreach($username in @("bob","alice","joe")){
$User = Get-ADUser -Identity $username -Properties mail,memberOf |Select Name,mail,memberof
$User | Select-Object Name,mail,@{Label="GroupDNs";Expr = {$_.memberof | Where-Object {$Groups -contains $_}}}
}
无需为每个 memberof
条目执行新的 Get-ADGroup
查询。
如果您想要一组名称的字符串,而不是包含字符串数组的 NoteProperty,您可以将组填充到哈希表中,然后将其用于 "look up" memberof
条目,使用ContainsKey()
方法:
$Groups = @{}
Get-ADGroup -Filter {Name -like "*finance*" -or Name -like "*creditcontrol*"} | ForEach-Object {
$Groups[$_.DistinguishedName] = $_
}
$UserInfo = foreach($username in @("bob","alice","joe")){
$User = Get-ADUser -Identity $username -Properties mail,memberOf |Select Name,mail,memberof
$User | Select-Object Name,mail,@{Label="Groups";Expr = { ($_.memberof | Where-Object {$Groups.ContainsKey($_)} | ForEach-Object { $Groups[$_].Name}) -join ";" }}
}
$UserInfo | Export-Csv C:\aduserinfo.csv -NoTypeInformation