Powershell 和 DirectorySearch 排除 OU

Powershell 和 DirectorySearch 排除 OU

我有一个问题,如何在运行此 PS 语句时排除特定 OU。这会给我域中的所有服务器。我喜欢排除名为

OU=退休,OU=服务器,DC=ABCCORP,dc-com

尝试了一些过滤,但没有成功。

$ObjFilter = "(operatingsystem=*SERVER*)" 
$objSearch = New-Object System.DirectoryServices.DirectorySearcher 
$objSearch.PageSize = 15000 
$objSearch.Filter = $ObjFilter 
$objSearch.SearchRoot = "LDAP://dc=ABCCORP,dc=com"
$AllObj = $objSearch.FindAll() | Select-Object @{n='Name';e={$_.properties['name']}} 

答案1

您可以将搜索结果传输到Where-ObjectLDAP 路径并进行过滤。

改变:

$AllObj = $objSearch.FindAll() | Select-Object @{n='Name';e={$_.properties['name']}}

到:

$AllObj = $objSearch.FindAll() | Where {-not ($_.Path -match 'OU=RETIRED,OU=SERVER,DC=ABCCORP,dc=com')} | Select-Object @{n='Name';e={$_.properties['name']}}

相关内容