Script para remover o AutoMapping do Exchange 2010 para todas as caixas de correio

5

Eu tenho um servidor Exchange 2010 SP3 que está recebendo o erro de evento 9646 do MSExchangeIS:

Sessão Mapi [ID] [Usuário AD] excedeu o máximo de 500 objetos do tipo "objtFolder"

Olhando para isto, descobrimos que a causa são vários usuários que têm muitas permissões de acesso total nas caixas de correio de outras pessoas.

Devido à maneira como isso mudou no SP1 Veja o artigo da Technet AQUI Agora, eles abrem automaticamente todos os usuários aos quais têm acesso, em vez de serem capazes de adicioná-los ou abri-los somente quando necessário.

O ideal é que eu goste de um script que eu possa executar para remover globalmente a string -Automapping $ true para todos os usuários: isso deve deixar o acesso à caixa de correio quando necessário, mas impedir a abertura automática, ocupando as sessões MAPI.

Eu tentei o script do Microsoft Technet a partir do URL acima, mas parece que não funcionou como pretendido:

[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

Estou presumindo que sharedmailbox é uma caixa de correio de exemplo específica que não existe no meu servidor: preciso de um script que pesquise todas as caixas de correio e altere o Automapping $ true para Automapping $ false para qualquer permissão de acesso na caixa de correio .

Isso é possível fazer?

    
por Dave 03.10.2013 / 14:44

1 resposta

6

Isso é incrivelmente fácil. Você simplesmente precisa recuperar uma lista de caixas de correio e executar o exemplo em cada uma delas:

# 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
    }
}
    
por 03.10.2013 / 15:53