我正在尝试使用用户实际名称来替换部分AD专有名称列的内容。
IE:
$ _。identity.DistinguishedName
中的模式CN=Touchdown§3939303030313134393535383932,CN=ExchangeActiveSyncDevices,CN=Guy\, Some,OU=Employees,OU=Departments and Categories,DC=something,DC=com
一条不起作用的班轮
$devices | Select @{N="Name";E={ (Get-AdUser -Identity ($_.Identity.DistinguishedName -match ".*\,CN=ExchangeActiveSyncDevices\,(.*)" | Out-Null; $Matches[1])).Name }}
仅此一点起作用......
$devices[0].Identity.DistinguishedName -match ".*\,CN=ExchangeActiveSyncDevices\,(.*)" | Out-Null; $Matches[1]
并显示......
CN=Guy\, Some,OU=Employees,OU=Departments and Categories,DC=something,DC=com
这也有效,这与我想要实现的类似,但不允许我使用DistinguishedName并查找实际名称。
$devices | Select @{N="Name";E={ $_.Identity.DistinguishedName -match ".*\,CN=ExchangeActiveSyncDevices\,(.*)" | Out-Null; $Matches[1] }}
一旦你试图这样做就会崩溃,因为我假设你不允许使用;在Get-ADUser中提供该身份参数时,打破下一个命令。
Get-ADUser -Identity ($devices[0].Identity.DistinguishedName -match ".*\,CN=ExchangeActiveSyncDevices\,(.*)" | Out-Null; $Matches[1])
如何通过使用select表达式来完成此操作,而无需填充整个新的单独变量并用修改后的内容替换原始内容?
答案 0 :(得分:0)
我不明白你为什么要输出Out-Null。如果我理解你的问题,你是否正在寻找一种从正则表达式中提取子串的方法?你可以使用Select-String;例如:
"Hello, world" | Select-String '^\S+, (\S+)' | ForEach-Object {
$_.Matches[0].Groups[1].Value
}
# outputs "world"
比尔