我一直试图获取AD用户的摘录,然后选择mail
,name
,memberof
。然后,我需要仅列出memberof
输出中的特定组,因此我最终得到的每个用户的列表包含其名称,电子邮件地址和与特定名称匹配的特定组,而不是所有组。成员。
Get-ADUser username -Properties memberof | Select-Object memberof
我似乎找不到这样做的方法,因为我最终得到上面的noteproperty或空管道。有没有办法实现我想做的事情?
答案 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()