搜索AD以查找属于多个组的用户

时间:2017-05-30 13:56:50

标签: powershell active-directory ldap

我试图让所有对其工作站具有本地管理员权限的用户,这是在memberof属性下指定的,我还需要在memberof属性下的另一个组进行过滤。我创造了类似的东西

Get-ADUser -Filter * -Properties DisplayName, EmailAddress, CN, StreetAddress, memberof |
Where-Object 
{$_.memberof.contains('RemovalStorage-R') -and 
 $_.memberof.contains('EU-IRL-Dublin' )
 } | 
Select DisplayName, EmailAddress, CN | Sort-Object Displayname

现在我需要将第一组更改为

Get-ADUser -Filter * -Properties DisplayName, EmailAddress, CN, StreetAddress, memberof |
Where-Object 
{$_.memberof.contains('EU-EIE*-LocalAdmins') -and 
 $_.memberof.contains('EU-IRL-Dublin' )
 } | 
Select DisplayName, EmailAddress, CN | Sort-Object Displayname

EIE *是工作站名称的开头,因此需要能够搜索通配符以获取名称的其余部分: EIE123, EIE124, EIE125, EIE126

提前感谢您的回复。 亲切的, 丹

1 个答案:

答案 0 :(得分:0)

单引号意味着从字面上理解字符串,并且包含类似于-eq,它必须完全匹配,提供真或假答案。所以现在你正在寻找一些完全符合EU-EIE * -LocalAdmins的东西。如果您将引号换成双引号并将.Contains更改为-like,那么您将获得更好的运气。

Get-ADUser -Filter * -Properties DisplayName, EmailAddress, CN, StreetAddress, memberof |
Where-Object 
{$_.memberof -like ("EU-EIE*-LocalAdmins") -and 
$_.memberof.contains('EU-IRL-Dublin' )
} | 
Select DisplayName, EmailAddress, CN | Sort-Object Displayname

请注意,您的环境可能与我的环境不同,但运行您的行会给出其成员的DN,这意味着您获得了OU = X DC = X,因此您可能希望两者都使用Like,并放置一个每一端都有通配符。

-like "*Word*One*"