Извлечь домен из DistiniguishedName с помощью PowerShell - PullRequest
0 голосов
/ 01 марта 2019

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

$ADS = 'CN=Lamda,OU=OU_Bloquage,DC=Adminstrateur,DC=6NLG-AD'

Но все пошло не так, когда я изменил $ADS на

$ADS = Get-ADUser -Identity 'Lamda' -Properties DistinguishedName |
       select DistinguishedName`

Результат, который я хочу получить:

DC=Administrateur,DC=6NLG-AD`

Ниже приведен код, который я написал

$ADS = Get-ADUser -Identity 'Lamda' -Properties DistinguishedName |
       select DistinguishedName
$pattern = '(?i)DC=\w{1,}?\b'
([RegEx]::Matches($ADS, $pattern) | ForEach-Object { $_.Value }) -join ','

1 Ответ

0 голосов
/ 01 марта 2019

Как уже отмечали Ансгар Вичерс и Lee_Daily, все, что вам действительно нужно, - это свойство DistinghuishedName пользователя.Командлет Get-ADUser возвращает это свойство по умолчанию, поэтому для получения его в виде строки просто выполните:

$dn = Get-ADUser -Identity 'Lamda' | Select-Object -ExpandProperty DistinguishedName

$ dn теперь будет строкой CN=Lamda,OU=OU_Bloquage,DC=Adminstrateur,DC=6NLG-AD

Чтобы получить только частьгде он начинается с DC=, из этой строки есть много опций.
Например:

$DN.Substring($dn.IndexOf("DC="))

Другой способ может быть:

'DC=' + ($DN -split 'DC=', 2)[-1]

Или даже что-то подобноесделайте это:

($DN -split '(?<![\\]),' | Where-Object { $_ -match '^DC=' }) -join ','

.. и, возможно, еще много способов получить желаемый результат

...