Exchange

刪除所有郵箱的 Exchange 2010 自動映射的腳本

  • October 3, 2013

我有一台 Exchange 2010 SP3 伺服器,它從 MSExchangeIS 收到應用程序事件錯誤 9646:

馬皮會議

$$ ID $$ $$ AD User $$超過 500 個“objtFolder”類型對象的最大值 對此進行調查,發現原因是幾個使用者對其他人的郵箱具有大量完全訪問權限。

由於 SP1 中這種變化的方式,請參見此處的 Technet 文章,他們現在會自動打開他們有權訪問的所有使用者,而不是僅在需要時才能添加或打開它們。

理想情況下,我想要一個我可以執行的腳本來全域刪除所有使用者的 -Automapping $true 字元串:這應該讓他們在需要時訪問郵箱,但阻止它自動打開,佔用 MAPI 會話。

我從上面的 URL 嘗試了 Microsoft Technet 腳本,但這似乎沒有按預期工作:

[PS]$FixAutoMapping = Get-MailboxPermission sharedmailbox|where {$_AccessRights -eq "FullAccess" -and $_IsInherited -eq $false}
The operation couldn't be performed because object sharedmailbox couldn't be found on '[Servername]'.
   + CategoryInfo          : InvalidData: (:) [Get-MailboxPermission], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : B485A4C7,Microsoft.Exchange.Management.RecipientTasks.GetMailboxPermission

我假設 sharedmailbox 是我的伺服器上不存在的特定範例郵箱:我需要一個腳本來搜尋所有郵箱,然後更改自動映射 $ true to Automapping $ 對郵箱的任何訪問權限為 false。

這可能嗎?

這非常容易。您只需要檢索郵箱列表並針對每個郵箱執行範例:

# Get all mailboxes in the forest
$Mailboxes = Get-Mailbox -ResultSize unlimited -IgnoreDefaultScope
$ConfirmPreference = 'None'

# Iterate over each mailbox
foreach($Mailbox in $Mailboxes)
{
   try 
   {
       # Try to run the example fix against the current $Mailbox
       $FixAutoMapping = Get-MailboxPermission $Mailbox |where {$_.AccessRights -eq "FullAccess" -and $_.IsInherited -eq $false}
       $FixAutoMapping | Remove-MailboxPermission
       $FixAutoMapping | ForEach {Add-MailboxPermission -Identity $_.Identity -User $_.User -AccessRights:FullAccess -AutoMapping $false} 
   }
   catch
   {
       # Inform about the error if unsuccessful
       Write-Host "Encountered error: $($Error[0].Exception) on mailbox $($Mailbox.DisplayName)" -ForegroundColor Red
   }
}

引用自:https://serverfault.com/questions/543559