从PS命令Get-ADUser剪切字符串前后的所有内容

时间:2018-06-28 12:21:58

标签: string powershell

   $test= Get-ADUser -Server dc1 hpeter -Properties DistinguishedName | Select-Object -ExpandProperty DistinguishedName

输出是这样的:

 CN=Hans Peter,OU=NRH,OU=Stuttgart,OU=XXXX,OU=XXXX,OU=XXXX,DC=DE,DC=Richard-Mayer,DC=org

如何切割第一个DC字符串“ DC = DE” 之前和之后的所有内容,以便仅获得第一个DC=DE条目? 我尝试了split(),但没有成功。我必须使用可以使用split方法的ToString()将输出转换为字符串吗? 对于任何帮助,我将非常感谢。

3 个答案:

答案 0 :(得分:3)

您需要为,方法指定定界符split()

$test= Get-ADUser -Server dc1 hpeter -Properties DistinguishedName | Select-Object -ExpandProperty DistinguishedName
$arr = $test.Split(',')

然后过滤并选择第一个:

$result = $arr | Where-Object {$_ -like "DC=*"} | Select-Object -First 1

一些可能的改进:

您还可以使用以下方法明确转换为String

[string]$test= Get-ADUser -Server dc1 hpeter -Properties DistinguishedName | Select-Object -ExpandProperty DistinguishedName

DistinguishedName可以这样访问:

[string]$test = (Get-ADUser -Server dc1 hpeter -Properties DistinguishedName).DistinguishedName

答案 1 :(得分:1)

有几种选择。这是一个:

$string = 'CN=Hans Peter,OU=NRH,OU=Stuttgart,OU=XXXX,OU=XXXX,OU=XXXX,DC=DE,DC=Richard-Mayer,DC=org'
$dc = $string.Split(',')[6]

答案 2 :(得分:0)

类似于其他人所说的,您可以使用类似于以下方式的split方法:

$test= Get-ADUser -Server dc1 hpeter -Properties DistinguishedName | Select-Object -ExpandProperty @{name="DC";expression={($_.DistinguishedName -split ",OU=")[6]}}