1

我有输入专有名称,如下所示:

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

我只需要打印 DC 部分,以获得如下输出:

我的域名
my.first.domain

看起来拆分或替换应该可以工作,但我无法弄清楚语法。

4

3 回答 3

2

您可以将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
于 2016-01-06T16:39:50.963 回答
1

这是完成它的一种快速而肮脏的方法。

("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

于 2016-01-06T16:38:58.837 回答
0

我会简单地删除所有内容,包括第一个,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=', '.'
于 2016-01-06T16:51:51.817 回答