Оставьте 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