Назад | Перейти на главную страницу

Усечение части DN LDAP в Powershell? (Или получить OU из DN LDAP.)

Какой самый простой способ получить OU, содержащее объект LDAP, в PowerShell?

Я работаю над сценарием для управления некоторыми группами, которые я сделал «динамическими» с помощью сценария, и я могу получить полное отличительное имя следующим образом:

$PseudoDynamicGroupDN = (Get-ADGroup -Filter {Name -like $PseudoDynamicGroup}).DistinguishedName

Он возвращает что-то вроде:

CN=MyPseudoDynamicGroup,OU=Users,OU=BusinessUnit,OU=Site,OU=Company,DC=domain,DC=forest,DC=tld

И я хочу отказаться от CN=MyPseudoDynamicGroup, немного, поэтому я получаю:

OU=Users,OU=BusinessUnit,OU=Site,OU=Company,DC=domain,DC=forest,DC=tld

Как мне сделать это как можно проще? Я пробовал использовать Оператор разделения, но это возвращает массив и удаляет запятые, заставляя меня добавить их обратно. Я подозреваю, что есть способ лучше.

Самый простой способ, который я нашел до сих пор, - использовать .NET framework IndexOf метод чтобы получить индекс первого экземпляра символа запятой и передать его в Метод подстроки .NET framework. Я использовал приведенный ниже код, который помещает желаемую строку в переменную с именем PseudoDynamicGroupOU.

$PseudoDynamicGroupDN = (Get-ADGroup -Filter {Name -like $PseudoDynamicGroup}).DistinguishedName;
$PseudoDynamicGroupDNPosition = $PseudoDynamicGroupDN.IndexOf(",");
$PseudoDynamicGroupOU = $PseudoDynamicGroupDN.Substring($PseudoDynamicGroupDNPosition+1);