Dienstag, 29. Dezember 2015

permanenter Status Wechsel des Content Index State

Hallo zusammen,

mal wieder ein seltsames Phänomen, welches sich aufzuschreiben lohnt. Ein Exchange 2013 (CU9) Multi-Role Server welcher Mitglied einer DAG ist, hatte permanent Probleme mit dem Content Index State der unterschiedlichsten Datenbanken. Durch die Bank war der Content Index State mal "healthy" und manchmal "failed".

Geprüft habe ich den jeweiligen Stauts mit folgenden PowerShell Befehl:
Get-MailboxDatabaseCopyStatus | FL Name,*Index*

Das Eregebnis war dann sehr aufschlussreich:

Name                         :                Mailboxdatabase01
ContentIndexState            :         Failed
ContentIndexErrorMessage     :  An internal error occurred for the database or its index.
ContentIndexErrorCode        :    2

Gleichzeitig wurde im Eventlog folgender Fehler (Event-ID 1009, MSExchangeFastSearch) protokolliert:

The indexing of mailbox database Mailboxdatabase01 encountered an unexpected exception. Error details: Microsoft.Exchange.Search.Core.Abstraction.OperationFailedException: The component operation has failed. ---> Microsoft.Exchange.Search.Core.Abstraction.OperationFailedException: The component operation has failed. ---> Microsoft.Exchange.Search.Fast.FastDocumentTimeoutException: The Content Submission Service returned failure for the document: Document timeout expired
. ---> System.TimeoutException: Document timeout expired

   --- End of inner exception stack trace ---
   at Microsoft.Exchange.Search.Fast.FastFeeder.EndSubmitDocument(IAsyncResult asyncResult)
   at Microsoft.Exchange.Search.Mdb.RetryFeeder.DocumentCompleteCallback(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at Microsoft.Exchange.Search.Core.Common.Executable.EndExecute(IAsyncResult asyncResult)
   at Microsoft.Exchange.Search.Engine.SearchFeedingController.ExecuteComplete(IAsyncResult asyncResult)
   --- End of inner exception stack trace ---
   at Microsoft.Exchange.Search.Core.Common.Executable.EndExecute(IAsyncResult asyncResult)
   at Microsoft.Exchange.Search.Engine.SearchRootController.ExecuteComplete(IAsyncResult asyncResult)

Das Re-Seeding des Content Index, was ich als ersten getestet hatte, brachte leider nicht wirklich den Erfolg, Erst mit dem Anlegen einer globalen Sicherheitsgruppe namens "ContentSubmitters" konnte das Problem behoben werden. Sobald die Gruppe angelegt ist, in der Registerkarte "Sicherheit" die Benutzer "NetworkService" und "Administrators" die Berechtigung "Vollzugriff" zuweisen. Im Anschluss müssen die beiden folgenden Dienste neugestartet werden:

Restart-Service MSExchangeFastSearch
Restart-Service HostControllerService

Danach klappts auch wieder mit dem Content Index State.

Viele Grüße, Jens

Freitag, 6. November 2015

BES5 / BES 10 Migration nach Exchange 2010 / Exchange 2013

Hallo zusammen,

im letzten Projekt hatten wir die Herausforderung Blackberry 5 und Blackberry 10 Benutzer von Exchange 2010 nach Exchange 2013 zu migrieren. Da dies alles in allem sehr zeitaufwendig und nervenaufreibend war möchte ich die gesammelten Erfahrungen gerne teilen...

Ausgangssituation:

X Benutzer auf BES5, die Postfächer liegen auf Exchange 2010 (Benutzerzugriff via Blackberry Technologie)
X Benutzer auf BES10, die Postfächer liegen auf Exchange 2010 (Benutzerzugriff via ActiveSync)
Der CAS Zugang ist bereits auf Exchange 2013 umgestellt, d.h. alle Benutzer egal ob das Postfach auf Exchange 2010 oder 2013 liegt greifen über die Exchange 2013er CAS Server auf die Mailboxen zu.

Ziel:

Alle Postfächer, egal ob BES5 oder BES10 nach Exchange 2013 migrieren ohne Auswirkungen auf die Endbenutzer (d.h. möglichst ohne Neu-Aktivierung der Geräte)
Im Anschluss Migration der BES5 und BES10 Benutzer nach BES 12

Vorgehensweise Blackberry 5:



Vorgehensweise Blackberry 10:
Blackberry 10 arbeitet direkt mit Active Sync so dass hier deutlich weniger Konfigurationsanpassungen durchgeführt werden müssen.

Auch der BES 10 hat ein konfiguriertes Profil welches im BAS unter „Blackberry Solution Management“ -> „Profiles“ -> „Manage Profiles“ -> Registerkarte „Email Profile Settings“ angepasst werden muss. Hier wird in aller Regel der Exchange 2010 CAS Server bzw. das CAS Server Array hinterlegt sein. Dies bedeutet, dass Postfächer welche bereits auf Exchange 2013 liegen den Service Blackberry problemlos weiter konsumieren können – dies gilt auch für Exchange 2010 Benutzer. Allerdings ist es nicht möglich das bereits migrierte Benutzer auf Exchange 2013 eine Enterprise Aktivierung durchführen können, da die URL auf Exchange 2010 zeigt. Die Umstellung auf das CAS2013 Array habe ich zum Abschluss der Postfachmigration von Exchange 2010 nach Exchange 2013 durchgeführt. Ab diesem Zeitpunkt funktioniert auch wieder Email Aktivierung für Blackberry 10 Geräte.


Viele Grüße, Jens

Freitag, 11. September 2015

Organisator wird nicht im Termin angezeigt

Hallo zusammen,

hatte die Tage den Fall, dass Benutzer nicht mehr den Organisator im Termin einer Raum-Ressource gesehen hatten. Folgenden PowerShell Befehl wurde bereits abgesetzt:

Set-CalendarProcessing -Identity raum@contoso.com -AutomateProcessing Auotaccept -AddOrganizerToSubject $true

AutoAccept muss zwingend gesetzt werden, da ansonsten die Parameter -AddOrganizerToSubject nicht berücksichtigt werden.

Na ja, jedenfalls konnte ich im eigentlichen Termin des Raumpostfachs den Orgnaisator dennoch nicht anschauen, auch wenn natürlich dieser im Betreff bereits hinterlegt ist. Die Lösung war, dass meinem Benutzer bzw. der Gruppe schlicht die Berechtigung Reviewer gefehlt hatte:

set-MailboxFolderPermission -Identity raum@contoso.com:\calendar -User jens@contoso.com -AccessRights reviewer

Softern "\Calendar" nicht funktioniert, ist das Postfach aller Voraussicht nach in Deutsch und somit muss "\Kalender" hinterlegt werden.

Viele Grüße, Jens

Montag, 10. August 2015

Kurz notiert: Export der Email Adressen einer bestimmten OU

Hallo zusammen,

mit diesem PowerShell Script ist es möglich alle Mailbox Benutzer einer bestimmten OU zu exportieren - genauer gesagt wird hier lediglich die primäre Email Adresse exportiert, was aber beliebig erweitert werden kann.

get-mailbox -OrganizationalUnit "OU-Name" -resultsize unlimited | select-object PrimarySmtpAddress | Export-Csv "C:\temp\User.csv" -NoTypeInformation -Delimiter ";"


Viele Grüße, Jens

Freitag, 10. Juli 2015

Handling ausgeschiedene Mitarbeiter

Hallo zusammen,

viele Firmen haben das Problem mit Postfachbehandlung ausgeschiedener Mitarbeiter. Sofern das Postfach gelöscht wird, versteht nahezu kein fachfremder ITler diesen komischen NDR, dass dieses Postfach nicht mehr existent ist.

Es muss also eine smartere, benutzer- und kundenfreundlichere Lösung her. Anbei beschreibe ich die Möglichkeit mit wenigen Befehlen eine anständige Abwesenheitsnotiz zentral durch die IT bereitgestellt in Kombination dass eingehende Emails direkt gelöscht werden, so dass das Postfach nicht potentiell überläuft und wieder unlesbare NDRs versendet werden:

New-InboxRule -Mailbox %Mailbox%-MyNameInToOrCcBox $true –DeleteMessage $true
Mit dieser Posteingangsregel für den speziellen Benutzer werden alle Emails die an dieses Postfach gesendet werden ohne Rückfrage gelöscht

$Message = Get-Content -path c:\temp\oof.txt
Mit diesem Befehl wird die Out-of-Office Vorlagen-Nachricht in die Variable $Message eingelesen. Diese ist entsprechend der jeweiligen OOF Meldung anzupassen.
Mit dem Befehl $Message kann man sich vorab schonmal das Ergebnis anschauen

Set-MailboxAutoReplyConfiguration -Id %Mailbox% -AutoReplyState enabled -InternalMessage "$Message" -ExternalMessage "$Message"

Mit diesem  Befehl wird die OOF Nachricht für das entsprechende Postfach für eingehende und ausgehende Emails ohne zeitlich Begrenzung gesetzt

Mit dem unten stehenden Befehl wird die OOF Einstellung wieder deaktiviert:
Set-MailboxAutoReplyConfiguration –id –AutoReplyState Disabled

Herzlichen Dank für Ihre E-Mail.
Leider existiert die von Ihnen angeschriebene E-Mailadresse nicht mehr.
Sehr gerne teilen wir Ihnen telefonisch einen persönlichen Ansprechpartner für Ihr Anliegen mit.
Wählen Sie hierzu einfach die Nummer unserer Zentrale.

Besten Dank und mit freundlichen Grüßen,

%Firmendaten%

Viele Grüße, Jens

Montag, 6. Juli 2015

Auswertung Mailbox Auslastung

Hallo zusammen,

mit dem unten stehenden PowerShell Script lässt sich einfach die aktuelle Mailbox Auslastung gemessen an der Quota als Exel Export darstellen:

Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails usermailbox | Where {$_.UseDatabaseQuotaDefaults -eq $false} | Select-Object @{label="ProhibitSendQuota";expression={(get-mailbox $_).ProhibitSendQuota.Value.ToMB()}}, @{label="TotalItemSize(MB)";expression={(Get-MailboxStatistics $_).TotalItemSize.Value.ToMB()}} | Export-Csv "C:\Scripts\UserMailboxSizes.csv" -NoTypeInformation -Delimiter ";"

Viele Grüße, Jens