Ldap过滤器用于多个Ou的Powershell

时间:2019-10-25 11:36:14

标签: powershell filter ldap ou

您好,您对Powershell还是很陌生,之前从未使用过Ldap -filter,所以我有一个问题。可以使用一个Ldap过滤器从多个Ou中去除AD用户吗?

OU=D5,OU=Standard,OU=User,OU=1,DC=test,DC=for-me,DC=nl
OU=D3,OU=Standard,OU=User,OU=1,DC=test,DC=for-me,DC=nl
OU=G2,OU=General,OU=User,OU=1,DC=test,DC=for-me,DC=nl
OU=C6,OU=Expired,OU=User,OU=1,DC=test,DC=for-me,DC=nl

对不起,我什至没有一个代码示例,但是我尝试过的任何事情都没有达到我想要的。 我愿意提供小费,提示,想法等。谢谢。

2 个答案:

答案 0 :(得分:1)

您不能使OU成为LDAP过滤器的一部分。但是您可以将OU作为搜索的基础,然后发出多个搜索。

# an array of OUs, this could also be achieved with e.g. $OUs = Get-Content 'some_file.txt'
$OUs = @(
    "OU=D5,OU=Standard,OU=User,OU=1,DC=test,DC=for-me,DC=nl"
    "OU=D3,OU=Standard,OU=User,OU=1,DC=test,DC=for-me,DC=nl"
    "OU=G2,OU=General,OU=User,OU=1,DC=test,DC=for-me,DC=nl"
    "OU=C6,OU=Expired,OU=User,OU=1,DC=test,DC=for-me,DC=nl"
)

foreach ($ou in $OUs) {
    Get-ADUser -SearchBase $ou
}

答案 1 :(得分:0)

它不是LDAP查询,在很大的环境中可能会令人怀疑,但是通常我建议使用Powershell的过滤器选项,如下所示:

Get-ADUser -Filter  * | Where-Object { $_.DistinguishedName.split(",",2)[1] -in 
    "OU=D5,OU=Standard,OU=User,OU=1,DC=test,DC=for-me,DC=nl",
    "OU=D3,OU=Standard,OU=User,OU=1,DC=test,DC=for-me,DC=nl",
    "OU=G2,OU=General,OU=User,OU=1,DC=test,DC=for-me,DC=nl",
    "OU=C6,OU=Expired,OU=User,OU=1,DC=test,DC=for-me,DC=nl"
}