Exchange: Mailboxen in PST exportieren

Manchmal will man entweder eine einzelne Mailbox oder alle Mailboxen auf einem Exchange in eine PST-Datei exportieren – das geht natürlich wunderbar einfach über die Powershell 😉

Zuerst muss man dem User mit dem man die PSTs exportieren will – z.B. dem Administrator – überhaupt das Recht zum Exportieren geben:

New-ManagementRoleAssignment -Role "Mailbox Import Export" -User Administrator

Danach bitte die Powershell-Konsole schließen und eine neue aufmachen.

Einzelne Mailbox exportieren

Eine einzelne Mailbox kann mit

New-MailboxExportRequest -Mailbox user -FilePath \\server\freigabe\user.pst

exportiert werden – hier mit dem Beispiel Administrator

New-MailboxExportRequest -Mailbox Administrator -FilePath \\localhost\c$\pst\administrator.pst

Alle Mailboxen exportieren

Will man alle Mailboxen exportieren geht das mit

get-mailbox | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\server\freigabe\$_.pst"}

Hier mein Beispiel:

get-mailbox | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\localhost\c$\pst\$_.pst"}

Das Ergebnis sieht dann so aus:

Status anzeigen

Die Fortschritte bzw. den Status des Exports kann man sich mit

Get-MailboxExportRequest

anzeigen lassen.

Aufräumen

Um alle Export-Request am Exchange am Ende wieder zu löschen kann man das mit

Get-MailboxExportRequest | Remove-MailboxExportRequest

die PST-Dateien bleiben natürlich 😉

Quelle: www.itnator.net

Exchange: Mailbox erstellen für alle User einer Organisationseinheit

Wenn man mal für alle User einer Organisationseinheit eine Exchange-Mailbox erstellen will geht das super einfach per Powershell:

Get-User -OrganizationalUnit „OU=Finanzverwaltung,OU=Abteilungen,DC=test,DC=local“ | Enable-Mailbox

Kurze Erklärung: Mit Get-User zeigen wir uns alle Benutzer in der angegebenen OU an (muss im LDAP-Pfad-Format bzw. als DistinguishedName angegeben sein) und dann pipen wir es in ein Enable-Mailbox wo eben die Mailbox erstellt wird. fertig 🙂

Exchange: Move-Request für alle Maiboxen einer Organisationseinheit

Bei Exchange-Migrationen verschiebe ich die Mailboxen der User eigentlich immer per Exchange Powershell mit dem Move-Request-Befehl.

Bei größeren Umgebungen verschiebe ich die Mailboxen gerne per Organisationseinheiten (OU). Im Active Directory sind die Benutzer eh hoffentlich schon in sinnvollen OUs strukturiert – Finanzabteilung, IT, etc. – und so kann ich hier einfach auf diese Struktur zurückgreifen.

Das geht ganz einfach über die Exchange Powershell:

Get-Mailbox -OrganizationalUnit "OU=Finanzabteilung,OU=Users,DC=Domain,DC=local" | New-MoveRequest -TargetDatabase "ExchangeDB01"

Kurze Erklärung: Mit Get-Mailbox zeigen wir uns alle Mailboxen in der angegebenen OU an (muss im LDAP-Pfad-Format bzw. als DistinguishedName angegeben sein) und dann pipen wir es in ein New-MoveRequest mit angegebener Datenbank.

Fertig 🙂

Übrigens: Den LDAP-Pfad bzw. den DistinguishedName bekommt man am einfachsten über das Active Directory-Benutzer und Computer-MMC:

Unter Ansicht die erweiterten Features aktivieren

In den Eigenschaften der OU auf Attribut-Editor gehen und dort den Wert distinguishedName mittels Ansicht anzeigen lassen – von dort kann man ihn einfach kopieren

IIS: X-Forwarded-For Header im Log

Wenn man einen Microsoft Internet Information Services (IIS) hinter einem Reverse Proxy oder einem Load Balancer betreibt, sieht man in den Logs des IIS nur immer die IP-Adresse der Reverse Proxys bzw. dem Load Balancers und nicht die eigentliche IP des Clients.

Wenn der Reverse Proxy bzw. Load Balancer richtig konfiguriert wurde – z.B. bei Nginx wäre es

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

dann wird die IP des Clients an den IIS jedoch sauber übergeben.

Um diese jetzt in den Logs zu sehen muss jetzt nur noch der X-Forwarded-For-Header aktiviert werden.

Den IIS Manager starten und den Punkt Protokollierung öffnen

Dort bei Format auf Felder auswählen…

Dort auf Feld hinzufügen

Dort folgende Werte eintragen:

Feldname: x-forwarded-for
Quelltyp: Anforderungsheader
Quelle: X-Forwarded-For

und mit OK bestätigen.

nochmal mit OK bestätigen und auf Übernehmen klicken

Jetzt taucht im Log-Verzeichnis eine Log-Datei mit eine vorangestellten x_ auf – dort wird jetzt reingeloggt – mit dem X-Forwarded-For-Header und so auch mit der originalen Client-IP.

Quelle: www.loadbalancer.org

Exchange 2013 und 2016: Mails bleiben in Entwürfe hängen

Es gibt manchmal mal das Problem unter Exchange Server 2013 und 2016 dass Emails nicht versendet werden und in Entwürfe (Drafts) bzw. manchmal auch in Postausgang hängen bleiben.

Das Problem tritt sowohl in Outlook als auch in der Outlook Web App (OWA) auf.

Der Grund war bei mir bisher immer eine fehlerhafte DNS-Konfiguration des Exchanges!

Vor allem bei mehreren Netzwerkkarten oder bei mehreren DNS-Servern kann hier die Automatik versagen.

Einzustellen ist das am einfachsten in der ECP:

Hier stehen die DNS-Lookups (intern und extern) standardmäßig auf „Alle Netzwerkkarten“:

Hier kann die richtige Netzwerkkarte ausgewählt werden – oder auch ein DNS-Server manuell eingetragen werden:

Danach sollte das Problem gelöst sein 🙂

Quelle: thoughtsofanidlemind.com

PowerShell: Der watch-Befehl aus Linux

Unter Linux gibt es ja den watch-Befehl mit dem man einen Befehl alle x Sekunden wiederholen kann. Unter der Windows PowerShell gibts sowas leider standardmäßig nicht – aber man kann den Befehl mit Boardmitteln nachbauen:

while ($true) {Clear-Host; gci; sleep 15}

In diesem Beispiel wird zuerst mit Clear-Host die aktuelle Anezige der PowerShell gelöscht, dann gci ausgeführt und zum Schluss 15 Sekunden gewartet. Danach wiederholt sich das ganze bis man es mit STRG-C abbricht.

der Befehl lässt sich natürlich durch fast jeden anderen Befehl ersetzten 😉

Das ganze lässt sich gut für z.B. anzeigen von Verschiebeanforderungen bei Exchange benutzen:

while ($true) {Clear-Host; get-moverequest; sleep 15}

man kann auch Befehle kombinieren – z.B. das Datum anzeigen und etwas pingen

while ($true) {Clear-Host; date; ping 9.9.9.9; sleep 15}

Outlook für Mac: Ändern des Servernames über AutoDiscover deaktivieren

Verbindet man Outlook für Mac von extern mit einem Exchange wird über den AutoDiscover-Mechanismus der Servername automatisch konfiguriert – bzw. geändert.

Problematisch ist es aber wenn hier der lokale Name des Exchange-Servers eingetragen wird – und somit keine Verbindung mehr zustande kommt.

Dieses Verhalten von Outlook kann man aber deaktiveren:

1) Outlook öffnen

2) AppleScript Editor öffnen (Script Editor.app in Programme/Dienstprogramme)

3) folgendes Script ausführen

tell application "Microsoft Outlook"
set background autodiscover of every exchange account to false
end tell

Danach den Servernamen im Outlook nochmal auf den externen Namen setzten – jetzt sollte der Servername nicht mehr geändert werden und die Verbindung funktionieren!

Windows Server Deduplication – Chunk Ordner wird riesengroß

Wenn man auf einem Windows Server das Dedup-Feature einschaltet kann es passieren, dass der ChunkStore (dieser befindet sich in dem Ordner „System Volume Information“) in dem die Informationen für das Dedup gespeichert werden immer weiter wächst und so riesig wird das er teilweise den ganzen freien Platz auf dem Volume verbraucht.

Das kann man aber über einen DedupJob aber wieder fixen -hier am Beispiel eines Volumes F: :

eine Powershell als Administrator öffnen

und

Start-DedupJob -Volume “F:” -Type GarbageCollection -Memory 50

man kann mit

Get-DedupJob

überprüfen wie weit der Job schon ist.

Hilft dies nicht ist eine Möglichkeit noch die Deduplizierung rückgänging zu machen.

Dazu lässt man Dedup auf dem Volume aktiviert – deaktiviert aber die Hintergrundaktivität

Set-DedupSchedule BackgroundOptimization -enable $false

Start-DedupJob -Volume „F:“ -Type Unoptimization

Start-DedupJob -Volume “F:” -Type GarbageCollection

danach sollte der Chunk-Ordner weg sein – dann kann dedup bei Bedarf wieder aktiviert werden.

Openssl: Zertifikat und Key zu einem PFX exportieren

Hat man eine Zertifikats-Datei (cert, pem oder ähnliches) und die dazugehörige KEY-Datei ist es ziemlich einfach daraus eine PFX-Datei zu erstellen – um z.B. das Zertifikat einfach in einem IIS zu installieren.

mit folgendem Befehl konvertiert man:

openssl pkcs12 -inkey cert.key -in cert.cert -export -out cert.pfx

nur noch ein Export-Kennwort eingeben – fertig 🙂

Quelle: stackoverflow

Windows-Prozessaktivierungsdienst startet nicht – Fehler 6801

Auf einem Windows-Server (in dem Fall ein 2008 R2) mit IIS starteten die IIS-Dienste nicht, da der Windows-Prozessaktivierungsdienst mit folgender Fehlermeldung nicht starten wollte:

„Windows konnte den Prozessaktivierungsdienst nicht sarten – Fehler 6801: Die Transaktionsunterstützung im angegebenen Ressourcen-Manager wurde nicht gestartet oder aufgrund eines Fehlers heruntergefahren“

bzw.:

„Windows could not start the Windows Process Activation Service – Error 6801: Transaction support within the specified resource manager is not started or was shut down due to an error“

Das Problem kann man folgend lösen:

eine Eingabeaufforderung (cmd) als Administrator startet und folgenden Befehl ausführen:

fsutil resource setautoreset true c:\

Danach muss man den Server neu starten – jetzt sollte der WAS (Windows-Prozessaktivierungsdienst) wieder starten – und somit auch die davon abhängigen IIS-Dienste 🙂

Quelle: forum.iis.net