фильтр на родительских контейнеров
НУ является частью DistinguishedName
свойства объекта.
Используйте Where-Object
, чтобы отфильтровать объекты, которые находятся внутри определенной OU, удалив первую часть DistinguishedName
и сравнивая остальные с DistinguishedName
в OU:
$OUDN = "OU=Service Accounts,OU=Accounts,DC=domain,DC=tld"
Get-ADUser -Filter {Enabled -eq $true} | Where-Object { $_.DistinguishedName -notlike "*,$OUDN" }
Если вы знаете OU имя, но не полное DistinguishedName
, вы можете удалить немедленные дочерние объекты OU из результатов, разделив отличительное имя на компартименты и сравнив второе (ближайший родительский контейнер) с именем, которое вы хотите исключить:
$OUName = "Service Accounts"
Get-ADUser -Filter {Enabled -eq $true} | Where-Object {
$ObjectCN,$ParentCN,$null = $_.DistinguishedName -split "(?<=[^\\]),"
$ParentCN -ne "OU=$OUName"
}
или исключить какой-либо объект с данным именем OU в своем родовом пути:
$OUName = "Service Accounts"
Get-ADUser -Filter {Enabled -eq $true} | Where-Object {
$ObjectCN,$ParentCNs = $_.DistinguishedName -split "(?<=[^\\]),"
$ParentCNs -notcontains "OU=$OUName"
}
Пользовательские значения свойств
Select-Object
поддерживает расчетные свойства. Вы можете поставить вычисляемое свойство со статическим выражением в качестве первого свойства, чтобы выбрать, например, так:
Get-ADUser | Select-Object @{Name="MyCustomColumn";Expression={"ACME"}},Name
экспортирована в CSV, приведенный выше пример будет иметь colunm заголовки «MyCustomColumn» и «Имя» в Col A и B соответственно, col A, всегда сохраняющий значение «ACME», тогда как col B будет содержать отдельные Имена пользователей
Where-Object имеет очень плохую производительность. люди предлагают использовать LDAPFilter над Where-Object –
@KolobCanyon Исправить, но вы не можете выполнить фильтрацию подстановки с атрибутом 'DistinguishedName' с использованием фильтра LDAP :-) –
Я только что узнал, что вчера был трудный путь ... Так что разочарование! –