【问题标题】:Search AD for users that are memberof multiple groups在 AD 中搜索属于多个组的用户
【发布时间】:2017-05-30 22:14:34
【问题描述】:

我正在尝试让所有对其工作站具有本地管理员权限的用户,这是在 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

提前感谢您的任何回复。 善良的rgds, 丹

【问题讨论】:

  • 使用双引号,改成like $_.memberof -like ("EU-EIE*-LocalAdmins")

标签: powershell active-directory ldap


【解决方案1】:

单引号意味着从字面上获取字符串,并且包含类似于-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*"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2013-09-17
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2014-04-08
    相关资源
    最近更新 更多