使用特定组列表导出AD用户

时间:2015-06-01 09:55:47

标签: powershell active-directory active-directory-group

我一直试图获取AD用户的摘录,然后选择mailnamememberof。然后,我需要仅列出memberof输出中的特定组,因此我最终得到的每个用户的列表包含其名称,电子邮件地址和与特定名称匹配的特定组,而不是所有组。成员。

Get-ADUser username -Properties memberof | Select-Object memberof

我似乎找不到这样做的方法,因为我最终得到上面的noteproperty或空管道。有没有办法实现我想做的事情?

1 个答案:

答案 0 :(得分:1)

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 $_}}}
}

没有为每个Get-ADGroup条目执行新的memberof查询。

如果你想要一个组名字符串,而不是一个包含字符串数组的NoteProperty,你可以将这些组填充到一个哈希表中,并使用它来查找memberof条目{{1}方法:

ContainsKey()