1

現在、モデル「firstname@domain.com」と新しい標準「FirstInitialLastName@domain.com」を使用して作成されたすべての AD ユーザーを見つけようとしています。Get-QADUser特にユーザーの詳細をプルダウンするために、Quest ActiveRoles モジュールを使用しています。

Get-QADUser -enabled -IncludedProperties PrimarySMTPAddress | ?{$_.Type -match "User"} | Select-Object FirstName,PrimarySMTPAddress ...

これにより、ユーザーの名前とその SMTP アドレスのリストが取得されます。私が困惑しているのは、結果を比較する方法です。

値を正規化して (最初の名前の文字列に「@domain.com」を追加するか、SMTP 文字列から「@domain.com」を削除する)、-ieq テストを実行するのが最善の方法だと思いました。私は最初にできることを発見しました:

%{ $address=$($_.FirstName + "@domain.com";) }

しかし、PrimarySMTPAddress 文字列に対して $address をテストする方法がわかりません。次のように 2 番目の変数を作成できます。

%{ $smtp=$($_.PrimarySMTPAddress); }

そして結果を得る:

[PS] C:\>$addy -ieq $smtp
True

ツリーを一度に処理できるように、すべてをストリームで行う方法がわかりません。これが単一の行よりもスクリプトに適しているものであれば、それも問題ありません。BASH の輝かしい世界から来て、私の脳はそれを 1 行にまとめたかっただけです。

4

2 に答える 2

1
Get-QADUser -Enabled -Email * -SizeLimit 0 | 
Where-Object {$_.Email.Split('@')[0] -eq $_.FirstName }
于 2012-09-05T09:14:10.963 に答える
0

これを試して:

Get-QADUser -enable -IncludedProperties PrimarySMTPAddress |
? { $_.PrimarySMTPAddress -match ("^"+[regex]::escape("$($_.firstname)")+"@domain.com") }
于 2012-09-05T08:20:15.767 に答える