fisi77
Goto Top

Exchange 2013 Powershell Posfachgröße

Hallo zusammen,
ich habe da mal eine Frage.
Wurde gerne auf meine Exchange Server 2013 per Powershellscript alle User ausgeben.
Als Details sollen noch die OU der User und die Postfachgröße mit angegeben werden und in eine Excel Datei exportiert werden.
Hat jemand ne idee wie ? oder ein Tool dafür?

Mit freundlichen Grüßen,
Fisi

Content-Key: 238522

Url: https://administrator.de/contentid/238522

Ausgedruckt am: 29.03.2024 um 11:03 Uhr

Mitglied: colinardo
colinardo 19.05.2014, aktualisiert am 20.05.2014 um 09:59:54 Uhr
Goto Top
Hallo fisi, Willkommen auf Administrator.de!
Könntest du so in einer EMC machen:
Import-Module ActiveDirectory
$csvfile = "C:\MailboxStatistik.csv"  
Get-Mailbox | Get-MailboxStatistics | ?{$_.ObjectClass –eq "Mailbox"} | Sort TotalItemSize –Descending | select DisplayName, @{n="Mailboxgröße(MB)";e={$_.TotalItemSize.Value.ToMB()}},@{n="OU";e={(get-aduser -filter "DisplayName -eq '$($_.DisplayName)'").DistinguishedName.Split(",",2)[1]}} | export-csv $csvfile -NoType -Encoding UTF8  
Das Ergebnis wird dann in einer CSV-Datei gespeichert.

Wenn man noch mehr Infos zum User ausgeben möchte kann man das ganze auch ausgehend von get-aduser machen und im Select noch die zusätzlich benötigten Felder angeben:
Import-Module ActiveDirectory
$csvfile = "C:\MailboxStatistik.csv"  
get-aduser -Filter "Enabled -eq 'True'" -properties msExchMailboxGuid | ?{$_.msExchMailboxGuid -ne $null} | select Name,SamAccountName,@{n="Postfachgröße(MB)";e={(get-MailboxStatistics $_.SamAccountName -ErrorAction SilentlyContinue).TotalItemSize.Value.toMB()}},@{n="OU";e={$_.DistinguishedName.Split(",",2)[1]}} | export-csv $csvfile -NoType -encoding UTF8  

Grüße Uwe
Mitglied: fisi77
fisi77 20.05.2014 um 15:17:23 Uhr
Goto Top
Hallo Uwe,
Danke für die schnelle Antwort!
Habe direkt beide Befehle getestet.
Der 1. funktioniert leider nicht. Ich habe versucht direkt auf meinem mailboxserver das Script laufen zu lassen leider steht mir dort das AD Modul nicht zur Verfügung.

Das 2. Script habe ich dann auf dem DC laufen lassen
>> Export der User funktioniert auch nur zeigt er mir in der Excel keine Speichergrößen an.

Kann man auch die einzelnen Details die man abfragt eine eine Eigene Spalte exportieren. Momentan liegen alle auf einer Spalte.

Mit freundlichen Grüßen,
Kai
Mitglied: colinardo
colinardo 20.05.2014 aktualisiert um 15:54:19 Uhr
Goto Top
Also hier gehen beide Scripte einwandfrei, mache das ja nicht zum ersten mal. Du musst natürlich wie schon erwähnt das ganze in einer "Exchange Management Console" ausführen. Die CSV-Datei musst du in Excel noch auf Spalten verteilen wenn als Trenner einer Komma verwendet wird (Text-Import-Wizard). Alternativ füge folgenden Parameter zu Export-CSV hinzu -Delimiter ";" damit ein Semikolon als Spaltentrenner fungiert, damit sollte Excel die Spalten direkt beim Öffnen erkennen und verteilen.

leider steht mir dort das AD Modul nicht zur Verfügung
das ist halt Voraussetzung damit die OU des Users extrahiert werden kann. Man kann das zwar auch anders machen (z.B. mit (dsquery -name "Max Mustermann").Split(",",2)[1]), aber diese minimalen Voraussetzungen sollten doch realisierbar sein ..

Grüße Uwe
Mitglied: fisi77
fisi77 20.05.2014 um 16:08:11 Uhr
Goto Top
Hallo Uwe,
Danke für die Info.
Deine Scripte habe ich auch nicht angezweifelt;)
Die Scripte führe ich natürlich in der Exchange Mangement Console aus. Jetzt frage ich mich doch wie du das ActiveDirectory Modul importierst bekommst.
Das klappt auf meinen Front End bzw. Back End Servern nicht. Lediglich auf dem DC.
Führe ich den Befehl "get-module -listavailable" auf den Front bzw. Back End Servern aus wird mir auch kein Modul für die Active Directory angezeigt. Hast du eine Idee wie ich das eingefügt bekomme?

Mit freundlichen Grüßen,
Kai
Mitglied: colinardo
Lösung colinardo 20.05.2014, aktualisiert am 03.07.2015 um 12:41:32 Uhr
Goto Top
Stichwort RSAT (Remote Server Administration Tools) / auf einem Server 2012(R2) so installiert:
Install-WindowsFeature RSAT-ADDS
http://technet.microsoft.com/de-de/library/bb691354%28v=exchg.150%29.as ...
Dann steht dir das Modul zur Verfügung.

Grüße Uwe
Mitglied: fisi77
fisi77 03.07.2015 um 13:58:34 Uhr
Goto Top
Hallo Zusammen,
das Script läuft bei mir Super!
Mittlerweile bin ich auf eine Erweiterung gestoßen und möchte für jeden User die Mobilen Geräte mit auflisten.
Den Befehl mit folgenden Param. habe ich dazu auch schon:

$UserList | foreach { Get-MobileDeviceStatistics -Mailbox $_} | FT Identity, DeviceModel, LastSuccessSync

Momentan führe ich das in einem einzelnen Script aus. Wurde das ganze jedoch gerne in eine *.csv exportieren.

Meine Version zur Zusammenführung der Befehle funktioniert leider nicht.
01.
Import-Module ActiveDirectory
02.
$csvfile = "C:\MailboxStatistik.csv"
03.
get-aduser -Filter "Enabled -eq 'True'" -properties msExchMailboxGuid | ?{$_.msExchMailboxGuid -ne $null} | select Name,SamAccountName,@{n="Postfachgröße(MB)";e={(get-MailboxStatistics $_.SamAccountName -ErrorAction SilentlyContinue).TotalItemSize.Value.toMB()}},@{n="OU";e={$_.DistinguishedName.Split(",",2)[1]}} {( Get-MobileDeviceStatistics -Mailbox )} | FT Identity, DeviceModel, LastSuccessSync | export-csv $csvfile -NoType -encoding UTF8

Hat vielleicht jeman eine Idee, wie ich den Befehl richtig mit Implementieren kann?

Mfg,
fisi
Mitglied: colinardo
colinardo 03.07.2015 aktualisiert um 15:24:39 Uhr
Goto Top
Weitere Calculated Property ... Beachte hier das ein User mehrere Devices haben kann, deswegen die Device-Informationen als Liste in einer Spalte (Bei mehr als einem Device geht das mit einzelnen Spalten für die Infos des Geräts nicht mehr)
Import-Module ActiveDirectory
$csvfile = "C:\MailboxStatistik.csv"  
get-aduser -Filter "Enabled -eq 'True'" -properties msExchMailboxGuid | ?{$_.msExchMailboxGuid -ne $null} | select Name,SamAccountName,@{n="Postfachgröße(MB)";e={(get-MailboxStatistics $_.SamAccountName -ErrorAction SilentlyContinue).TotalItemSize.Value.toMB()}},@{n="OU";e={$_.DistinguishedName.Split(",",2)[1]}},@{n="Mobile-Devices";e={(Get-MobileDeviceStatistics -Mailbox $_.SamAccountName -EA SilentlyContinue | %{"$($_.Identity);$($_.DeviceModel);$($_.LastSuccessSync)"}) -join "`n"}} | export-csv $csvfile -NoType -encoding UTF8  
Mitglied: fisi77
fisi77 03.07.2015 um 16:09:49 Uhr
Goto Top
Super!!! Das so sollte die Anzeige aussehen.
Jetzt werden jedoch noch Werte wie, Name, SamAccountName und Postfachgröße in einer Spalte in Excel angezeigt.
Kann ich das noch irgendwie ändern?
Mitglied: colinardo
colinardo 03.07.2015 aktualisiert um 16:21:56 Uhr
Goto Top
Jetzt werden jedoch noch Werte wie, Name, SamAccountName und Postfachgröße in einer Spalte in Excel angezeigt. Kann ich das noch irgendwie ändern?
Sicher, ein deutsches Excel verwendet beim direkten öffnen einer CSV per Default das Semikolon als Trenner und nicht das Komma, deswegen musst du das als Delimiter bei Export-CSV explizit angeben, dann erkennt Excel die Spalten automatisch.
Export-Csv $csvfile -NoType -Delimiter ";" -Encoding UTF8  
Grüße Uwe
Mitglied: fisi77
fisi77 03.07.2015 um 16:45:29 Uhr
Goto Top
Ah ja. natürlich. Den hab ich hinten ganz vergessen - sorry.
Danke für deine Hilfe!
Es werden jedoch alle Daten aus dem Befehl Get-Mobile DeviceStatistics in einer Spalte ausgegeben, kann man das noch splitten?
Außerdem scheint es so, als ob jetzt nur noch ein Active Sync Gerät gelistet wird und nicht alle die verfügbar sind.
Mitglied: colinardo
colinardo 03.07.2015 aktualisiert um 17:00:37 Uhr
Goto Top
Es werden jedoch alle Daten aus dem Befehl Get-Mobile DeviceStatistics in einer Spalte ausgegeben, kann man das noch splitten?
Hab ich doch oben geschrieben, das wurde extra so gemacht, das ginge nur wenn die User nur jeweils ein einziges Gerät hätten, bei mehreren kann das ja Prinzipbedingt so nicht funktionieren (denk mal genau drüber nach dann machts auch bei dir Klickface-wink !)

Kann es hier im Moment nicht testen, da unterwegs ... Schau ich mir dann noch mal an ...
Vermutlich musst du hier anstatt $_.SamAccountName den Alias der Mailbox des Users bei Get-MobileDevice..... verwenden. Oder du hast die Zellen in Excel einfach nicht größer gezogen, da die Devices per Zeilenumbruch getrennt sind.
Mitglied: fisi77
fisi77 06.07.2015 um 09:32:49 Uhr
Goto Top
Ja, natürlich stimmt.
Es sind auch alle Geräte verfügbar.
Super Danke!
Mitglied: fisi77
fisi77 31.07.2015 um 15:46:45 Uhr
Goto Top
Ist es denn möglich, das ich alle Geräte in einer Zeile schreibe?
Also wenn ich eine Ausgabe von einem Benutzer mit 3 Mobile Devices, werden ja die Gerät in einer Spalte alle 3 Untereinander Dargestellt.
Kann ich diese anstatt untereinander hintereinanderschreiben und z.B. durch ein Komma trennen? Oder die jeweiligen Strings per Anführungszeichen trennen?
Mitglied: colinardo
colinardo 31.07.2015 aktualisiert um 15:51:44 Uhr
Goto Top
Einfach bei dem Code hier von oben das gewünschte Zeichen für eine Trennung angeben. Im Moment ist das ein `n für einen Zeilenumbruch
-join "`n"
also z.B. nach
-join ","