2012-09-05 35 views
1

我目前正在嘗試查找使用模型「[email protected]」創建的所有AD用戶與我們的新標準「[email protected]」。我使用任務ActiveRoles模塊,具體Get-QADUser拉下我的用戶信息:Powershell - 將Active Directory用戶名與電子郵件地址進行比較

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

這讓我的用戶名字的名單和他們的SMTP地址。我被困在哪裏是如何比較結果。

我認爲規範化的價值(要麼從第一個名稱字符串添加「@ domain.com」或從SMTP字符串剝離「@ domain.com」),然後執行-ieq測試將是最好的方法。我發現我能做到先用:

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

但我想不出反對PrimarySMTPAddress字符串,如何在測試$地址。我可以創建一個第二個變量:

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

並得到結果:

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

我只是不清楚如何做到這一切的流,這樣我可以一次處理我的樹。如果這是更適合腳本而不是單行的東西,那也沒關係。來自BASH的光榮世界,我的大腦只是想把它變成一條線。

回答

1
Get-QADUser -Enabled -Email * -SizeLimit 0 | 
Where-Object {$_.Email.Split('@')[0] -eq $_.FirstName } 
+0

它就在那裏,就這麼簡單。我所有使用分裂的嘗試都失敗了。謝謝! – Christian

0

試試這個:

Get-QADUser -enable -IncludedProperties PrimarySMTPAddress | 
? { $_.PrimarySMTPAddress -match ("^"+[regex]::escape("$($_.firstname)")+"@domain.com") } 
相關問題