2014-02-20 66 views
1

我有該腳本列出了所有正在轉發電子郵件的郵箱,但是,我很好奇是否有辦法使其返回轉發給特定用戶的所有郵箱。基本上我試圖找出將郵件轉發到「johndoe」的每個郵箱。任何幫助將不勝感激!這是Exchange 2007的BTW ...列出轉發給特定用戶的所有郵箱

這裏是迄今爲止腳本:

$ = FWD後GET-郵箱| Where-Object {$ _。ForwardingAddress -ne $ null} |選擇名稱,轉發地址

foreach($ fwd in $ fwds){$ fwd |添加成員-MemberType noteproperty -name「ContactAddress」值(獲得接觸$ fwd.ForwardingAddress).WindowsEmailAddress}

$ FWD的

回答

0

Exchange使用CanonicalName的轉發地址,所以你需要從用戶名中查找。由於它可能是郵箱,DL或聯繫人,我知道的最簡單的方法是使用Get-Recipient,並獲取身份屬性。

$RecipientCN = (get-recipient johndoe).Identity 
get-mailbox | Where-Object { $_.ForwardingAddress -eq $RecipientCN } 
+0

工作就像一個魅力...感謝芽! –

0

@ mjolinor的版本可以工作,但速度很慢,因爲它會加載所有郵箱。在我的系統上,大約需要30秒才能通過〜300個郵箱。

這可以通過添加過濾器到Get-Mailbox命令只返回實際被轉發的,像這樣加速:

$RecipientCN = (get-recipient johndoe).Identity 
Get-Mailbox -ResultSize Unlimited -Filter {ForwardingAddress -ne $null} | Where-Object {$_.ForwardingAddress -eq $RecipientCN} 

別急,我們可以得到更快!爲什麼不在過濾器中搜索正確的用戶權限?可能是因爲很難獲得正確的語法,因爲在-Filter中使用變量會讓人困惑。

訣竅是周圍使用變量圍繞整個過濾表達式加雙引號,單引號:

$RecipientCN = (get-recipient johndoe).Identity 
Get-Mailbox -ResultSize Unlimited -Filter "ForwardingAddress -eq '$RecipientCN'" 

這個版本返回0.6S相同的結果 - 約50快倍。

相關問題