Оставьте DC частью отличительного имени

У меня есть для ввода отличительных имен, таких как следующие:

CN = A00.user, OU = MYOU,OU=A00,OU=MyOU3,DC= мой, DC = домен
CN=A01.user1,OU=MyOU1,OU-MyOU2,OU=A00,OU=MyOU3,DC= мой, DC = первый, DC = домен

Мне нужно распечатать только часть DC, чтобы получить вывод вроде:

my.domain
my.first.domain

Похоже, что разделение или замена должны работать, но у меня проблемы с выяснением синтаксиса.

3 ответа

Решение

Я бы просто удалил все до первого включительно ,DC= а затем заменить оставшиеся ,DC= с точками.

$dn = 'CN=A00.user,OU=MyOU,OU=A00,OU=MyOU3,DC=my,DC=domain',
      'CN=A01.user1,OU=MyOU1,OU-MyOU2,OU=A00,OU=MyOU3,DC=my,DC=first,DC=domain'

$dn -replace '^.*?,dc=' -replace ',dc=', '.'

Вы можете использовать Get-ADPathname.ps1 с -Split параметр, Select-String с регулярным выражением, и -join оператор:

(
  Get-ADPathname 'CN=A01.user1,OU=MyOU1,OU-MyOU2,OU=A00,OU=MyOU3,DC=my,DC=first,DC=domain' -Split | Select-String '^DC=(.+)' | ForEach-Object {
    $_.Matches[0].Groups[1].Value
  }
) -join '.'

Выход:

my.first.domain

Вот быстрый и грязный способ сделать это.

("CN=A00.user,OU=MyOU,OU=A00,OU=MyOU3,DC=my,DC=domain " -split "," | 
Where-Object { $_.StartsWith("DC=") } | 
ForEach-Object { $_.Replace("DC=","")}) -join "."

Производит my.domain

Другие вопросы по тегам