Powershell auswertung aktive Postfächer

Haraldson

Lt. Junior Grade
Registriert
Nov. 2011
Beiträge
260
Gibt es eine Möglichkeit per Powershell alle aktiven Postfächer eines Exchange Servers herrauszufinden und z.B. in eine Textdatei zu schreiben? Kann man hier auch die Postfächer pro Benutzer anzeigen lassen / auflisten?

Also ich weis das ich mir mit Get-Mailbox -ResultSize unlimited | Format-Table DisplayName schonmal alle Postfächer anzeigen lassen kann. Ich würde aber eine Möglichkeit benötigen, alle aktiven (z.B. jeder der in den letzten 1-2 Monaten eine Email geschrieben hat) aufzulisten

Vielen Dank schonmal im Vorraus
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: maloz
Vielen Dank soweit war ich auch schon . . . bin leider kein Programmierer und habe auch sonst recht wenig mit der Powershell zu tun, gehe aber davon aus das man so eine Auswertung nur mit der Powershell hinbekommt?

https://docs.microsoft.com/de-de/ex...use-powershell-to-display-mailbox-information

Get-Mailbox -ResultSize unlimited | Format-Table DisplayName geht zwar in der Exchange Shell aber wie bekommt man nun angezeigt welche Postfächer aktiv sind?

EDIT:

Aktuell bin ich soweit:

Import-Module ActiveDirectory
New-Item -Path "C:\" -Name "Temp" -ItemType directory -ErrorAction SilentlyContinue
Get-ADUser -LDAPFilter "(msExchMailboxGuid=*)" | Format-Table Autosize, Name | Out-File C:\Temp\aktive_Mailbenutzer.txt -force

Nur fehlt mir irgendwie der Parameter für die Mailboxen . . . bzw. ist hier eher die Frage: Sollte man das aus dem AD mittels Powershell auslesen oder mit der Exchange Management Shell ?
 
Zuletzt bearbeitet:
Also wenn du wirklich wissen willst über welche Mailboxen E-Mails laufen kommst du um
PowerShell:
Get-MessageTrackingLog

kaum herum. Du müsstest die obige Ausgabe pipen und anschließend alle Postfächer abfragen ob innerhalb der letzten 60/90/x Tage ein Log vorliegt. Puh.
Ergänzung ()

Also wenn du wirklich wissen willst über welche Mailboxen E-Mails laufen kommst du um
PowerShell:
Get-MessageTrackingLog

kaum herum. Du müsstest die obige Ausgabe pipen und anschließend alle Postfächer abfragen ob innerhalb der letzten 60/90/x Tage ein Log vorliegt. Puh.


Haraldson schrieb:
Nur fehlt mir irgendwie der Parameter für die Mailboxen . . . bzw. ist hier eher die Frage: Sollte man das aus dem AD mittels Powershell auslesen oder mit der Exchange Management Shell ?

Exchange = Exchange Shell
AD = AD Shell

Du kannst natürlich jeweils die Befehle importieren, wie du das da richtig machst im Script, aber verfehlt den Sinn und Zweck des Ganzen.
 
  • Gefällt mir
Reaktionen: snaxilian
+1 für @kamblars Vorschlag. Postfächer & Mailversand/-empfang sind zwei Paar Schuhe, die du kombinieren musst. Genau genommen müsstest Postfächer gar nicht betrachten sondern nur die Mailadressen also ob für eine Mailadresse in den letzten X Tagen eine Mail rein kam oder diese Adresse Mails versandt hat. Mailadressen mit 0 Treffern kannst dann gucken ob und welches Postfach dem zugewiesen ist. Im Anschluss solltest aber prüfen ob zu dem Postfach noch weitere Mailadresse bzw. Aliase gehören.

Du kannst ja problemlos zu einem Postfach zwei oder mehr Adressen hinzufügen. Wenn ich jetzt nur mit adresse_1@domain.tld versende aber auch adresse_2@domain.tld auf das Postfach zeigt dann wirst für erstes Treffer im MessageTrackingLog finden, für zweite aber nicht. Jetzt nur anhand der zweiten Adresse das Postfach zu löschen wäre suboptimal.
 
Definiere auch bitte für uns, was du unter "aktive Postfächer" meinst? Tatsächlich genutzte Postfächer? Oder habt ihr ggf. deaktivierte Mailboxes und du willst dir die aktivierten anzeigen? etc...


EDIT: Hab dein Edit jetzt erst gelesen. Dann kommst du wie @kamblars beschrieben hat, nicht um das
MessageTrackingLog drumherum.

Wenn du mit der Shell nicht so klar kommst, gibts hier auch eine GUI https://www.frankysweb.de/message-tracking-gui/ Da solltest du dann dein ergebnis in den letzten 1-2 Monaten bekommen. Das Ergebnis wird dich aber etwas erschlagen, je nach größe deines Mailservers.
 
  • Gefällt mir
Reaktionen: Haraldson
Okay also es geht im Grunde genommen um folgendes: Ich müsste herrausfinden welche Postfächer derzeit aktiv genutzt werden , idealerweise wäre dies mit den aktivieren Benutzer im AD gegenzu kontrollieren so ich die die Zusammenfassung habe: Aktivierter Benutzer im AD nutzt wieviele Postfächer aktiv. Für die aktiven Benutzer im AD habe ich bereits ein Script mit LastLogonDate

Import-Module ActiveDirectory
New-Item -Path "C:\" -Name "Temp" -ItemType directory -ErrorAction SilentlyContinue
Get-ADUser -Properties whenCreated, LastLogonDate -Filter {Enabled -eq $true} | Sort whenCreated, LastLogonDate -Descending | Format-Table Name, whenCreated, LastLogonDate -AutoSize | Out-File C:\Temp\Aktivierte_Benutzer.txt -force
Get-ADUser -Properties whenCreated, LastLogonDate -Filter {Enabled -eq $false} | Sort whenCreated, LastLogonDate -Descending | Format-Table Name, whenCreated, LastLogonDate -AutoSize | Out-File C:\Temp\Deaktivierte_Benutzer.txt -force

Mein Hintergedanke war ja das ich über die Postfächer herausfinde welche Mailboxen aktiv genutzt bwerden indem man einfach schaut auf welches Postfach ist z.B. zuletzt eine Email gekommen

Wie bereits erwähnt bin ich weder Programmierer noch habe ich sonderlich viel mit der Powershell zu tun, daher hatte ich hier um Hilfe gebeten
Ergänzung ()

Vielen Dank für den Link schonmal . . . das geht schonmal gut in die Richtung. Ja ich meinte tatsächlich genutzte Postfächer. Da User die aus einem Unternehmen ausscheiden nur deaktiviert und nicht gelöscht werden ist es dann halt schwierig irgendwann rauszufinden wieviele aktive Postfächer wirklich noch vorhanden sind . . . . mir würde hierzu nur ein Vergleich der aktiven AD Benutzer und der Postfächer einfallen

EDIT: Gibt es bei der GUI die Möglichkeit die Suchkirterien einzuschränken, z.B. bei Absender alle die *@kundendomäne.xx haben?

EDIT2: Okay also jetzt kam grad nochmals ganz genau die Anforderung: Es wird ein Script gesucht, die alle nicht deaktivierten Benutzer die ein Exchange Postfach haben und in den letzten 30 Tagen angemeldet waren
 
Zuletzt bearbeitet:
LastLogonDate ist eine kleine Falle. Für belegbare Zahlen musst du diese Abfrage gegen alle Domain Controller machen und dann die Daten konsolidieren da diese Information nicht auf alle DCs repliziert wird. Meldet sich ein User an und erwischt DC_1 dann wird nur dort das LastLogonDate aktualisiert bei den anderen DCs eben nicht.

Haraldson schrieb:
Postfächer herausfinde welche Mailboxen
Ein Postfach ist eine Mailbox.

Ich würde eher prüfen ob es Mailboxen gibt, die inaktiven Benutzern zugeordnet sind und bei Treffern ob diese Mailbox ggf. noch bei anderen eingebunden sind.
Beispielsweise wenn ein Mitarbeiter das Unternehmen verlässt bekommt ein anderer MA Zugriffsrechte auf diese Mailbox um noch mitzubekommen wenn sich Kunden, Partner, etc an diesen ehemaligen MA wenden. Aus "Anwendersicht" wird das Postfach ja noch aktiv genutzt weil es könnte ja noch etwas kommen.

Eine andere Alternative wäre nach Mailboxen zu suchen, denen keine Mailadresse zugewiesen ist. Dann ist ja sicher gestellt, dass dort keine Mails mehr rein oder raus können. Aber auch da würde ich die Anwender nicht unterschätzen wenn Mailboxen als Archiv/Dokumentenablage etc. missbraucht wird weil könnte man ja nochmal brauchen oder so.

Alternativ: Alle aktiven User zusammen suchen, passende Mailboxen raus suchen, diese aus der Liste aller Mailboxen entfernen.

Für inaktive Mailboxen anhand der LastLogon gibt es z.B. hier etwas: https://www.nucleustechnologies.com/blog/finding-inactive-mailboxes-in-exchange-server-environment/
 
Danke @snaxilian

EDIT: Wenn es nur 1 DC gibt ist es ja prinzipiell egal oder?

Ich glaube ich habe etwas gefunden was ich brauche Link

Prinzipiell ist der Hintergedanke für die ganze Aktion folgende . . . . Jeder aktive User mit Mailbox = 1 Lizenz
Und ich habe (leider) das Vergnügen herauszufinden wieviele aktive User mit Mailboxen wir haben um die Lizenzen feststellen zu können. Ich denke mit dem Link von oben habe ich in ca. das gefunden was wir brauchen weil das Script ja alle User anzeigt die sich in den letzten 30 Tagen angemeldet haben. Für die anderen Postfächer gibt es ja Weiterleitungen ect.
Es geht in weiterer Folge auch nicht darum inaktive zu löschen oder sowas . . . . einfach mal nur den Bestand feststellen. Meines Wissens nach sind die Anzahl der Postfächer ja nicht wirklich relevat sondern nur die aktiven User die es benutzen richtig?

Nett wäre nur noch wenn man das Scipt aus der Exchange Management Shell als Powershell Script abspeichern könnte, damit man dies auf dem Desktop einfach als ausführbares Script hinterlegt. Andererseits hab ich zumindest mal eingefügt das es den Output als .txt speichert

| Out-File C:\Temp\aktive_Mailboxen.txt -force
 
Zuletzt bearbeitet:
Ich unterstelle mal, es geht um o365: Jede real existierende Person erfordert eine Lizenz. Ihr werdet doch wissen, wie viele Mitarbeiter ihr habt...
Shared Mailboxes erfordern keine Lizenz. Anwendungen oder Appliances, die Mails versenden (und ggf. auch empfangen) sollen, erfordern eine Lizenz.

Wenn du aber deinen Zeitrahmen zu knapp fasst, z.B. 90 Tage erwischt du ggf. nicht alle relevanten Mailboxen. Vielleicht gibt es ja Systeme/Adressen, die nur einmal im Jahr benötigt werden aber diesen Fehler muss jedes Unternehmen wohl mindestens einmal machen, dass sich keine Gedanken und Asset & Lizenzmanagement macht 🤷‍♂️
 
Prinzipiell geht es um Exchange Server verschiedener Versionen (2010, 2013, 2016 und 2019 wobei diese ja gleich sind) . . . .

O365 wäre ja toll weil ich es da direkt im Admin Panel auswerten kann (meines Wissens nach)

Lt. Obrigkeit reicht ein Zeitraum von 30 Tagen ö__Ö
 
Okay hattest Recht das mit dem LastLogonDate ist (seltsamerweise) fehlerhaft . . . . allerdings habe ich festgestellt das LastLogonTime als Parameter korrekter ist . . . .

New-Item -Path "C:\" -Name "Temp" -ItemType directory -ErrorAction SilentlyContinue
Get-MailboxStatistics -Server servername | Where {$_.LastLogonTime -gt (Get-Date).AddDays(-30)} | Sort LastLogonTime -Descending | FT Name,DisplayName,LastLogonTime -Autosize | Out-File C:\Temp\aktive_Mailboxen.txt -force
 
Zuletzt bearbeitet:
Zurück
Oben