我有一个问题,如何在运行此 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-Object
LDAP 路径并进行过滤。
改变:
$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']}}