1

我尝试了以下代码来提取域,并且在定义变量时它工作得很好

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

但是当我$ADS变成

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

我想要的结果是:

DC=管理员,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 ','
4

1 回答 1

1

正如 Ansgar Wiechers 和 Lee_Daily 已经指出的那样,您真正想要的只是用户的 DistinghuishedName 属性。默认情况下Get-ADUser,cmdlet 返回此属性,因此要将其作为字符串获取,只需执行以下操作:

$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 ','

..可能还有更多方法来获得所需的结果

于 2019-03-01T13:59:52.193 回答