Мне нужно получить первое подразделение по отличительному имени

У меня есть этот запрос PS, чтобы получить различающееся имя серверов:

 $AD = get-adcomputer -filter {OperatingSystem -like '*Server*' -and OperatingSystem -notlike '*2003*'} -property name, description, DistinguishedName | Select name, description, DistinguishedName 

и я хочу получить первый экземпляр OU, поэтому я хочу "OU= веб-серверы"

CN=Server1,OU=Web Servers,OU=Servers,OU=HeadOffice Servers,etc

Как я могу это сделать? Спасибо

2 ответа

Решение

Разбор DN путем разделения на запятые является довольно распространенной практикой, но может быть ненадежным, потому что имена могут содержать встроенные запятые (они будут экранированы обратной косой чертой). Вот решение с регулярным выражением, которое должно быть более надежным:

$dn = 'CN=Server1,OU=Web Servers,OU=Servers,OU=HeadOffice Servers,DC=domaain,DC=com'
$OU = $dn -replace '.+?,OU=(.+?),(?:OU|DC)=.+','$1'

$OU

Web Servers

Предоставленное решение с регулярным выражением работает только в том случае, если первый элемент не является OU. Вот решение, которое будет работать в любом сценарии и немного более читабельно для типов, отличных от регулярных выражений. Если у вас есть следующий пример, разделение на "," или решение с регулярным выражением вернет "OU=Servers", "Servers" соответственно (я предполагаю, что вы хотите удалить OU = из строки)

$dn = 'OU=Web Servers,OU=Servers,OU=HeadOffice Servers,DC=domaain,DC=com'
($dn -split 'OU=|,OU=')[1]

Если у вас нет вложенных OU, вам может потребоваться добавить дополнительную логику

(($dn -split 'OU=|,OU=')[1] -split ',')[0]

Если вы разделите строку DN и используете запятую в качестве разделителя, то OU станет вторым элементом в массиве.

Это может быть возвращено с помощью квадратных скобок для доступа к отдельному элементу массива. Поскольку это второй элемент, мы используем [1] для доступа к нему, так как [0] - первый элемент.

$DN = "CN=Server1,OU=Web Servers,OU=Servers,OU=HeadOffice Servers,DC=This,DC=Com"
$DN.Split(",")[1]
Другие вопросы по тегам