1

部分的なAD識別名列の内容をユーザーの実際の名前に置き換えるために、セミワンライナーを実行しようとしています。

いいえ:

$_.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 でその ID パラメーターをフィードするときに、次のコマンドにブレークします。

Get-ADUser -Identity ($devices[0].Identity.DistinguishedName -match ".*\,CN=ExchangeActiveSyncDevices\,(.*)" | Out-Null; $Matches[1])

まったく新しい別の変数を入力して元の内容を変更された内容に置き換えることなく、選択式を使用してこれをどのように達成しますか?

4

1 に答える 1

0

Out-Null にパイプする理由がわかりません。あなたの質問が理解できれば、正規表現から部分文字列を抽出する方法を探していますか? Select-String を使用できます。例えば:

"Hello, world" | Select-String '^\S+, (\S+)' | ForEach-Object {
  $_.Matches[0].Groups[1].Value
}
# outputs "world"

明細書

于 2013-04-30T23:31:53.897 に答える