Visualizzazione post con etichetta MailboxGUID. Mostra tutti i post
Visualizzazione post con etichetta MailboxGUID. Mostra tutti i post

lunedì 18 gennaio 2016

MS Exchange: Eseguire la pulizia/sincronizzazione dei DAG tramite EMS in MS Exchange 2013-2016

Nell'articolo MS Exchange: Eseguire la pulizia/sincronizzazione dei DAG tramite EMS in MS Exchange 2007-2010 abbiamo visto come forzare la sincronizzazione dei DAG con le informazioni aggiornate presenti in Active Directory utilizzando il cmdlet Clean-MailboxDatabase, evitando di dover attendere l'esecuzione della manutenzione schedulata.

In MS Exchange 2013 e 2016 il problema della visualizzazione tramite GUI delle caselle disconnesse è ancora presente ma il cmdlet Clean-MailboxDatabase non esiste più: il cmdlet è stato sostituito da Update-StoreMailboxState.

A differenza di Clean-MailboxDatabase che agiva su un intero database, il cmdlet Update-StoreMailboxState ci consente di operare anche su una singola casella.

La sintassi è la seguente:
Update-StoreMailboxState -Database "DatabaseIdParameter" -Identity "StoreMailboxIdParameter" [-Confirm [SwitchParameter]] [-WhatIf [SwitchParameter]]

Dove entrambi i parametri -Database e -Identity sono obbligatori pertanto è necessario conoscere il MailboxGUID.

Per conoscere il MailboxGuid delle caselle è possibile eseguire il seguente comando da EMS:
Get-MailboxDatabase | Get-MailboxStatistics | Format-List DisplayName,MailboxGuid,Database,DisconnectReason,DisconnectDate

A questo punto, conoscendo il MailboxGUID, possiamo aggiornare le informazioni/stato di una singola mailbox tramite Update-StoreMailboxState:
Update-StoreMailboxState -Database <DatabaseIdParameter> -Identity <StoreMailboxIdParameter>
ad es.
Update-StoreMailboxState -Database DAG01 -Identity 99ee9ee9-85ee-999-e9ee-9999999e9e9e

Se intendiamo aggiornare tutte le mailbox presenti su un particolare database:
Get-MailboxStatistics -Database <nome_database> | ForEach {Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}
ad es.
Get-MailboxStatistics -Database DAG01 | ForEach {Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}

Se si intende aggiornare lo stato per tutte le mailbox disconnesse di un particolare database:
Get-MailboxStatistics -Database <nome_database> | Where {$_.DisconnectReason -ne $null } | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}

Per agire su tutte le caselle disconnesse dell'infrastruttura:
Get-MailboxServer | Get-MailboxDatabase | Where {$_.DisconnectReason -ne $null } | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}