Montag, 1. Dezember 2014

Kurz notiert: Export aller Mitglieder einer Verteilerliste inkl. Details

Hallo zusammen,

mit dem folgenden Powershell Script werden sämtliche Mitglieder einer Verteilerliste ausgelesen und mit den entsprechenden Details exportiert:

Get-DistributionGroupMember %name% | foreach {Get-ADUser $_.samaccountname -properties *} | select name, Description, title, telephoneNumber, mobile, mail, streetaddress, postalcode, City | export-csv -path c:\temp\export.csv -delimiter ";"


Viele Grüße, Jens

Donnerstag, 27. November 2014

Löschen der mail.que Datenbank

Hallo zusammen,

ab und an kommt die Situation in der die mail.que Datenbank gelöscht werden muss. Anbei ein How-To wie die Datenbank korrekt gelöscht und neu-erstellt wird:

Queue in Maintenance versetzen:
Set-ServerComponentState %hostname% -Component hubtransport -state draining -Requester maintenance

Dienst stoppen:
Microsoft Exchange Transport Dienst

Löschen Verzeichnis:
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue

Dienst starten:
Microsoft Exchange Transport Dienst

Queue wieder aktiv nehmen:

Set-ServerComponentState %hostname% -Component hubtransport -state active -requester maintenance

Viele Grüße, Jens

Mittwoch, 5. November 2014

Kurz notiert: Ausgabe aller Raumpöstfächer die potentiell keine Besprechungsanfragen automatisch akzeptieren

Hallo zusammen,

Ausgabe aller Räume, die potentiell keine Autoaccept hinterlegt haben:

get-mailbox -resultsize unlimited -filter {recipienttypedetails -eq "roommailbox" -or recipient

typedetails -eq "equipmentmailbox"} | Get-CalendarProcessing | Where-Object {$_.CalendarProcessing -ne "autoaccept"}

Viele Grüße, Jens

Montag, 22. September 2014

Einfache Überprüfung ob Hotfix installiert ist

Hallo zusammen,

immer mal wieder muss geprüft werden ob dieser oder jener Hotfix auf einem Windows System installiert ist oder nicht.

Mit dem folgenden DOS Befehl wird überprüft ob eben dieser Hotfix installiert ist oder nichts. Sofern kein Ergebnis zurückgeliefert wird, ist der Hotfix nicht installiert:

wmic qfe get hotfixid | find "KB2655992"

Viele Grüße, Jens

Mittwoch, 3. September 2014

Blackberry Express 5.04 Migration nach Exchange 2013

Hallo zusammen,

in den vergangenen Wochen hatte ich leider ein paar graue Haar mehr bekommen, da doch einiges an Zeit und Nerven für die Blackberry Migration auf Exchange 2013 draufgegangen sind.

Erstmal zu Ausgangslage, eine bestehende Exchange 2010 Umgebung wird nach Exchange 2013 migriert, inkl. Blackberry Benutzer.

Eigentlich ganz einfach, jedoch stellt es sich so dar, dass Exchange 2013 mit seinen Clients nicht mehr MAPI spricht sondern direkt über EWS. Die Konfiguration so wie ich es bisher gekannt hatte hinsichtlich Blackberry funktioniert also so nicht mehr, Blackberry muss zwingend für die EWS Nutzung konfiguriert werden und das obwohl die MAPI Collaboration 1.2.1 Installation nach wie vor installiert werden muss.

Eine gute Installationsanleitung ist hier zu finden, http://ukblog.im-mobility.com/installing-blackberry-enterprise-server-504-mr2-microsoft-exchange-2013
Wir hatten MR04 installliert, dennoch fehlen noch wichtige Updates die so nicht mehr zur Verfügung stehen, die im Anschluss der Installation jedoch noch hinzugefügt und registriert werden muss. Die Dateien sind hier zu finden, https://www.dropbox.com/s/3kwksere6jy262w/BESUPDATE.zip  

Nun ja, wir hatten uns aufgrund der Masse der Postfächer auf Exchange 2010 darauf geeinigt, dass wir scheibchenweise migrieren. Vorab sei festgehalten, dass der BESADMIN entweder Exchange 2010 Benutzer oder Exchange 2013 Benutzer bedienen kann, Benutzer aus beiden Technologien kann der BES 5.04 Express Server nicht bedienen. Wir mussten somit einen zweiten BESADMIN namens BESADMIN2013 auf Exchange 2013 anlegen und sämtliche entsprechenden Berechtigungen vergeben. Anbei die Auflistung der Tasks, die hier durchgeführt werden mussten:

http://btsc.webapps.blackberry.com/btsc/viewdocument.do?externalId=KB33406&sliceId=2&cmd=displayKC&docType=kc&noCount=true&ViewedDocsListHelper=com.kanisa.apps.common.BaseViewedDocsListHelperImpl

http://btsc.webapps.blackberry.com/btsc/viewdocument.do?noCount=true&externalId=de-de-KB20157&cmd=displayKC&docType=kc

In der Registry unter HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem muss ein neuer String Value namens "RPCHTTPProxyMap_BES" erstellt werden, der Inhalt variiet natürlich von Installation zu Installation, wichtig ist jedoch die Schreibweise  *=https://[FrontEndPoolFQDN]

der DWORD LDAPSearch muss zwingend auf "0" stehen, [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Research In Motion\BlackBerry Enterprise Server\Agents] - sonst funktioniert das Device ganz genau 15min bis Blackberry im AD via LDAP Informationen abruft, die Blackberry nicht abrufen kann. 

Nachdem der ganze Aufwand betrieben worden war, funktionierte der Blackberry Dienst teilweise, d.h. der Mailfluss hatte einwandfrei funktioniert, jedoch Kalendereinträge vom Gerät aus und von Outlook aus brachten leider im Eventlog die folgenden Fehlermeldungen:

{test10@contoso.com} MAPIMailbox::MAPIMailbox - OpenMsgStore (0x8004011d) failed, MailboxDN=/o=Exchange/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=4344a0fe985348b7b5cd99c0abfa53c9-test1, ServerDN=/o=Exchange/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=44212887-eaa5-4500-b823-026e215e66b5@contoso.com/cn=Microsoft Private MDB

/o=Exchange/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=test@contoso.com} Synchronize() failed: ERR_FAIL, Tag=7642

Leider konnte mir der Blackberry Support auch nicht wirklich helfen, so dass ich so lange dran gesessen bin, bis ich endlich die Lösung hatte.

Wenn ein Benutzer unter Exchange 2010 angelegt wird, wir im AD parallel auch das Attribute legacyExchangeDN befüllt, dass dann ungefähr so aussieht, 
/o=Exchange/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=test@contoso.comfcc

Wenn ein Benutzer unter Exchange 2013 angelegt wird, wir im AD parallel auch das Attribute legacyExchangeDN befüllt, dass dann ungefähr so aussieht, 
/o=Exchange/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=8b24c44ab9804d2ea68e24c7be6d7895-test@

der Blackberry hatte ja auch immer genau das bemängelt, dass die Attribute nicht passen würden, allerdings ändert Exchange bei der Postfachmigration von Exchange 2010 nach Exchange 2010 nicht das Attribut legacyExchangeDN und genau das habe ich dann von Hand gemacht, anbei die Anleitung:


  • Migration der Postfächer von Exchange 2010 nach Exchange 2013
  • Migration der BES Benutzer via Blackberry Transporter
  • Zwischensicherung des legacyExchangeDN für den jeweiligen Benutzer und Inhalt von diesem Attribut löschen
  • In Exchange 2013 eine weitere Adresse, X500, dem Benutzer hinzufügen und die legacyExchangeDN Information hinzufügen (Hintergrund: wird dies nicht gemacht, können Benutzer auf Emails vor der Migration nicht mehr antworten und das wäre blöd)
  • Kontrolle des Felds legacyExchangeDN in ADSIEDIT, hier müsste nun die Exchange 2013 Schreibweise hinterlegt sind
  • Wechsel auf den Blackberry Server und unter C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server\Utility in DOS "HandheldCleanup -u" ausführen
  • Im Anschluss ca. 15min warten und den Blackberry auf Herz und Nieren testen, wer schneller testen möchte startet den Blackberry Controller Dienst neu

Viele Grüße, Jens


Mittwoch, 2. Juli 2014

Export Mailboxen nach PST

Hallo zusammen,

Um Mailboxen nach PST zu exportieren müssen einige Schritte im Vorfeld durchgeführt werden, so dass das Ganze auch am Ende des Tages funktioniert:

Zuerst muss die RBAC Rolle zugewiesen werden, so dass das Cmdlet zur Verfügung steht:

New-ManagementRoleAssignment –Role “Mailbox Import Export” –User Contoso\Administrator

Ich wollte den massenhaftes .PST Export gleich direkt auf einem File-Share zur Verfügung stellen. Hierzu reicht es nicht aus, das Share freizugeben, es muss auch die Gruppe "Exchange Trusted Subsystem" die Berechtigung "Ändern" zugewiesen werden.


Den aktuellen Status des Exports kann wie folgt abgefragt werden:

get-MailboxExportRequest | Where-Object {$_.Status -eq "Completed"} - mit diesem Befehl werden alle Export Requests angezeigt, die bereits fertig sind

get-MailboxExportRequest | Where-Object {$_.Status -ne "Completed"} - mit diesem Befehl werden alle NICHT erfolgreich beendeten Export Requests angezeigt

Viele Grüße, Jens

Dienstag, 1. Juli 2014

massenhafte Änderung Alias, UPN und SAMAccountName via CSV (bulk change Alias)

Hallo zusammen,

mit diesem Script habe ich eine massenhafte Änderung an den AD Attributen ALIAS und UPN mittels csv Datei durchgeführt:

Import-Csv -Delimiter ‘;’ -Path C:\scripts\file.csv | ForEach-Object{Set-Mailbox $_.name -Alias $_.SAMAccountnameNEW}
Import-Csv -Delimiter ‘;’ -Path C:\scripts\file.csv | ForEach-Object{Set-Mailbox $_.name -SAMAccountName $_.SAMAccountnameNEW}
Import-Csv -Delimiter ‘;’ -Path C:\scripts\file.csv | ForEach-Object{Set-Mailbox $_.name -UserPrincipalName $_.UPN}


Im CSV Datei müssen die Spalten auch entsprechend = SAMAccountNameNEW benamst sein. Dieses Spalte ist meine Quelle für das Neusetzen des Alias.

Viele Grüße, Jens

Dienstag, 24. Juni 2014

Ausgabe aller aktivierten Active Sync User, die eine bestimmte Email Domäne als primäre SMTP Adresse hinterlegt haben

Hallo zusammen,

mit dem nachfolgenden Einzeiler werden alle Exchange Benutzer ausgegeben, die Active Sync aktiviert haben und eine spezielle Email Domäne in der PrimarySmtpAddress hinterlegt haben:

Get-CasMailbox -resultsize unlimited -Filter {ActiveSyncEnabled -eq $true} | where {$_.PrimarySmtpAddress -like "*@contoso.com"} | select-object name, PrimarySmtpAddress | Export-CSV c:\temp\output.csv -NoTypeInformation -encoding utf8


Viele Grüße, Jens

Mittwoch, 18. Juni 2014

Export aller Benutzer einer Email Adress Policy

Hallo zusammen,

mit diesem Zweizeiler habe ich mir alle Benutzer in eine CSV Datei exportiert, die einer bestimmten Exchange Email Address Policy zugewiesen sind, inkl. den LinkedMasterAccount noch mit dazu:

$filter = (Get-EmailAddressPolicy '%Name Email Address Policy%').RecipientFilter

Get-Recipient -RecipientPreviewFilter $filter | get-mailbox | Select-Object Name,PrimarySmtpAddress,samaccountname,linkedmasteraccount | Export-CSV c:\temp\output.csv -NoTypeInformation -encoding utf8


Viele Grüße, Jens

Freitag, 13. Juni 2014

Troubleshooting Federation Trust

Hallo zusammen,

es kommt leider immer mal wieder vor, dass eine Federation nicht mehr funktioniert, in diesem Fall gibt es einen simplen Befehl mit dem der Federation Trust grundsätzlich überprüft werden kann:

Test-FederationTrust -UserIdentity jens.kleinhans@contoso.com

Leider hatte ich daraufhin zwei Fehlermeldungen angezeigt bekommen:

Id : FederationMetadata
Type : Error
Message : The federation trust doesn’t contain the same certificates published by the security token service in its federation metadata.



Id : TokenValidation
Type : Error
Message : Failed to validate delegation token.

Daraufhin habe ich die Federation bzw. die Metadaten aktualisiert und der Test lief sofort problemlos durch:

Get-FederationTrust | Set-FederationTrust -RefreshMetadata

Ich hatte diesen Fehler im Zuge einer Exchange 2013er Migration, ,hier muss beachtet werden, dass ALLE Exchange Server ggf. den Exchange-System Proxy hinterlegt haben da ansonsten die Metadaten nicht aktualisiert werden kann.
Weitere Infos hier

Viele Grüße, Jens

Fallstricke Exchange 2013 Federation Trust

Hallo zusammen,

ich hatte mich die Tage mit dem Erstellen eines Federation Trusts für Exchange 2013 beschäftigt.
die betroffenen Exchange Server haben keinen direkten Zugriff auf das Internet, es steht allerdings ein Proxy zur Verfügung.

Zu Beginn müssen ALLEN Exchange Servern, egal ob CAS oder Mailbox Servern ein Proxy im Exchange zugewiesen werden:

set-exchangeserver -Identity %Servername% -InternetWebProxy http://proxyserver:port

Erst im Folgenden  kann über das EAC die Federation mit dem Microsoft Federation Gateway aufgebaut werden. 

Viele Grüße, Jens

Mittwoch, 30. April 2014

Hello again - X500 Adressen

Hallo zusammen,

während Migrationen sind die X500 Adressen ein gern gesehener Gast. Gerade wenn Benutzer in einer andere Exchange Organisation,z.B. ins Hosting, umgezogen werden und manche andere User noch auf der on-premise Infrastruktur verweilen kann es dazu kommen dass interne Nachrichten nicht mehr zugestellt werden können. Dieser Benutzer verwenden hier, wie immer, ihren Outlook Cache um ihren Kollegen emails zuzustellen. Genau dann sind die X500 Adressen dann wieder doch wichtig. Die Email wird dann mit einem NDR quittiert. Anhand des NDR kann aber die X500 nachgebildet werden, um diese dem Benutzerobjekt wieder zu  hinterlegen:
Und so gehts:
Im NDR müsste folgende Zeile hinterlegt sein:
IMCEAEX-_O=EXCH_OU=EXCHANGE+20ADMINISTRATIVE+20GROUP+20+28FHSDHJF23GHYED+29_CN=RECIPIENTS_CN=RON+2EMayers@contoso.com

Nun gehts ran ans Umschreiben:
"_"  =  "/"
+20  = Leerzeichen
+28 und +29 sind ( und ) 
+2E ist ein " ."
Wenn alles geändert worden ist, sieht das Ergebnis wie folgt aus:
/O=EXCH/OU=EXCHANGE ADMINISTRATIVE GROUP (28FHSDHJF23GHYED)/CN=RECIPIENTS/CN=RON.Mayers@contoso.com

Viele Grüße, Jens

Mittwoch, 23. April 2014

Suchen eines speziellen Öffentlichen Ordners

Hallo zusammen, 

mit folgendem Befehl ist es möglich einen speziellen öffentlichen Ordner bzw. dessen Pfad zu lokalisieren: 

Get-PublicFolder -recurse -resultsize unlimited | where {$_.name –like "Test*"} | fl 

 Viele Grüße, Jens

Freitag, 28. März 2014

Export UPN aus AD

Hallo zusammen,

ich hatte neulich die Anforderung, dass alle UPN Informationen aus dem AD zu exportieren, anbei das PowerShell Script:

Get-ADUser -Filter * -SearchBase "OU=User,OU=OU,DC=Kunde,DC=de" -Properties Enabled, Displayname, Givenname, Surname, EmployeeNumber, EmailAddress, Department, StreetAddress, Title, UserPrincipalName | select Enabled, Displayname, GivenName, Surname, EmployeeNumber, EmailAddress, Department, Title, UserPrincipalName | Export-CSV "C:\output.csv"

Um Get-ADUser zu verwenden muss dieses Feature noch aktiviert werden:
Import-Module ActiveDirectory

Montag, 24. März 2014

Hallo zusammen,

ich hatte neulich eine Anforderung, alle unterschiedlichen Namen der Kalender auszugeben. In der Exchange Organisation wurden unterschiedliche Sprachversionen von Outlook verwendet, so dass auch die Ordner "Kalender", in Abhängigkeit der Länderauswahl einen anderen Namen hatte.

Daraufhin ist das unten stehenden Script entstanden:


$mailboxes = @(Get-Mailbox -ResultSize Unlimited)
$report = @()

foreach ($mailbox in $mailboxes)
{
    $inboxstats = Get-MailboxFolderStatistics $mailbox -FolderScope Calendar 

    $mbObj = New-Object PSObject
    $mbObj | Add-Member -MemberType NoteProperty -Name "Display Name" -Value $mailbox.DisplayName
    $mbObj | Add-Member -MemberType NoteProperty -Name "Calendar Name" -Value $inboxstats.name
    $report += $mbObj
}

$report


Das Ergebnis kann auch direkt in eine CSV Datei umgeleitet werden:

FolderNames.ps1 | Export-CSV Foldernames.csv

Viele Grüße Jens

Montag, 3. März 2014

Troubleshooting Exchange Federation

Hallo zusammen,

ich hatte die Tage ein Problem mit einer bereits eingerichteten und eigentlich funktionalen Exchange Federation für die Free/Busy Abfrage. Die Federation hatte schlicht von einem Tag auf den anderen Tag nicht mehr funktioniert.

Im ersten Schritt habe ich die Federation kontrolliert.
Jeder Federate muss auf seiner Seite die Federation kontrollieren, 
Test-FederationTrust -UserIdentity %eigene Email Adresse%

In einem der Federation wurden für einige Tests Fehler angezeigt:

RunspaceId : xxxxxxxxxxxxxxxxxxxxxxxxxx
Id         : FederationTrustConfiguration
Type       : Success
Message    : FederationTrust object in ActiveDirectory is valid.

RunspaceId : xxxxxxxxxxxxxxxxxxxxxxxxxx
Id         : FederationMetadata
Type       : Error
Message    : The federation trust doesn't contain the same certificates published by the security token service in its federation metadata.

RunspaceId : xxxxxxxxxxxxxxxxxxxxxxxxxx
Id         : StsCertificate
Type       : Success
Message    : Valid certificate referenced by property TokenIssuerCertificate in the FederationTrust object.

RunspaceId : xxxxxxxxxxxxxxxxxxxxxxxxxx
Id         : StsPreviousCertificate
Type       : Success
Message    : Valid certificate referenced by property TokenIssuerPrevCertificate in the FederationTrust object.

RunspaceId : xxxxxxxxxxxxxxxxxxxxxxxxxx
Id         : OrganizationCertificate
Type       : Success
Message    : Valid certificate referenced by property OrgPrivCertificate in the FederationTrust object.

RunspaceId : xxxxxxxxxxxxxxxxxxxxxxxxxx
Id         : TokenRequest
Type       : Success
Message    : Request for delegation token succeeded.

RunspaceId : xxxxxxxxxxxxxxxxxxxxxxxxxx
Id         : TokenValidation
Type       : Error

Message    : Failed to validate delegation token.

Mittels dem Befehl Get-FederationTrust | Set-Federationtrust –RefreshMetaData wurden die s.g. Federation Metadaten aktualisiert und die Federation hatte wieder problemlos funktioniert.

viele Grüße, Jens

Freitag, 28. Februar 2014

Ausgabe Mitglieder einer Exchange Active Sync Richtlinie

Hallo zusammen,

anbei ein kleiner PowerShell Befehl mit dem alle Benutzer einer spezifischen ActiveSync Richtline in eine CSV Datei ausgegeben werden:

Get-CASMailbox -resultsize unlimited | where {$_.ActiveSyncMailboxPolicy -eq "Default"} | Select-Object Name | Export-Csv "C:\temp\Default.csv"

Viele Grüße, Jens

Mittwoch, 26. Februar 2014

Popups beim Zugriff auf öffentliche Ordner

Hallo zusammen,

ich hatte heute den Fall, dass auf einem Exchange System immer mal wieder die Outlook Benutzer mit lästigen Popups gegängelt worden sind



Es handelt sich hier um eine Exchange 2010 SP2 Umgebung, als Outlook kommt ein 2010 SP2 zum Einsatz. Was auch wiederum alles up2date ist und es hier keinen Ansatzpunkt gab. Im Backend kommen zwei HUB/CAS Server und zwei MBX Server zum Einsatz, alle vier Server sind ebenfalls auf Exchange 2010 SP2.

Die Popups kamen bei unterschiedlichen Benutzern bei unterschiedlichen Zugriffen, ein Muster war auf den ersten Blick nicht erkennbar.

Nachdem ich mir die CAS Server im speziellen Autodiscover genauer angeschaut hatte, ist mir aufgefallen dass einem der beiden CAS Server eine Einstellung fehlt:

set-AutodiscoverVirtualDirectory "CASServer1\Autodiscover (Default Web Site)" -InternalUrl https//cas.domain.de/autodiscover/autodiscover.xml

Dadurch dass die internalURL leer war und der NLB beim Zugriff immer wieder unterschiedliche Server den Benutzern zugewiesen hatte war das hier die Problemlösung.

Viele Grüße, Jens

Montag, 17. Februar 2014

Exchange Zertifikatsanzeige "The Certificate Status could ne be determinated because the Revocation check Failed"


Hallo zusammen,

ich bin heute über ein Zertifikat gestolpert welches auf den ersten Blick ungültig aussah.



Das Zertfikat ist aber mehr oder weniger in Ordnung und funktional - lediglich der Revocation Check konnte nicht durchgeführt werden. Der Zertifikat ist funktional, es können nur lediglich keine Dienste diesem Zertifikat zugewiesen werden.

Der Grund für dieses vermeintliche Problem liegt darin, dass der besagte Exchange Server keinen Zugriff auf das Internet hat und somit auch den Check nicht durchführen kann.

Weitere Infos gibt es hier:

Viele Grüße, Jens

Donnerstag, 13. Februar 2014

deaktivierter Benutzer im AD kann trotzdem noch Active Sync benutzen

Hallo zusammen,

ich habe hier einen interessanten Artikel zum Thema Ausscheiden von ehemaligen Mitarbeitern gefunden. 
Wenn ein Benutzer im AD deaktiviert wird, heisst dass nicht automatisch im Umkehrschluss dass dessen mobiles Endgerät auch gleich und sofort deaktiviert ist.

Es kann bis zu 24h dauern, bis das mobile Gerät bzw. der dazugehörige Benutzer ebenfalls deaktiviert ist.
Hintergrund ist hier der Cache, welcher auf den mobilen Endgeräten nicht permanent neu aktualisiert wird und somit erfährt das Gerät auch erst später, dasss der zugehörige Benutzer bereits deaktiviert ist.

Weitere Infos zu diesem Thema gibt es hier, http://blogs.technet.com/b/messaging_with_communications/archive/2012/06/26/activesync-disabled-accounts-and-devices-continuing-to-sync.aspx 

Viele Grüße, Jens