Office 365 - eMail PS

Hallo Zusammen

ich versuche ne schöne Statistik aus Office 365 zu laden... das funktioniert soweit so gut aber ich möchte noch gerne was mit Eurer Hilfe optimieren

- Speed. Das Teil braucht für 760 Mailboxen ca. 2h, kann man dies optimieren?
Ich sortiere unten den Output, aber irgendwie kommt die Tabelle zuerst mit Grösse, Namen, eMail - ich hätte aber lieber Name, eMail und Grösse

$Result=@()
$mailboxes = Get-Mailbox -ResultSize Unlimited
$totalmbx = $mailboxes.Count
$i = 1
$mailboxes | ForEach-Object {
$i++
$mbx = $_
$mbs = Get-MailboxStatistics $mbx.UserPrincipalName

Write-Progress -activity "Processing $mbx" -status "$i out of $totalmbx completed"

if ($mbs.TotalItemSize -ne $null){
$size = [math]::Round(($mbs.TotalItemSize.ToString().Split('(')[1].Split(' ')[0].Replace(',','')/1MB),2)
}else{
$size = 0 }

$Result += New-Object PSObject -property @{
Name = $mbx.DisplayName
UserPrincipalName = $mbx.UserPrincipalName
TotalSizeInMB = $size
}
}
$Result | Export-CSV "c:\tools\MailBox-Size.csv" -NoTypeInformation -Encoding UTF8

Content-Key: 1269126356

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

Ausgedruckt am: 19.10.2021 um 22:10 Uhr

Mitglied: erikro
Lösung erikro 16.09.2021 um 19:01:58 Uhr
Goto Top
Moin,

zur Frage nach der Optimierung.

Das wird ersatzlos gestrichen. Warum alles in ein riesen Array von Ojekten schreiben, wenn Du es doch als CSV ausgeben willst.

Soweit ok.

Nein. Wenn Du schnelle Skripte schreiben willst, dann nimm nicht Foreach-Object,

sondern die echte Foreach-Schleife:

Die Zählervariable hast Du mit 1 initialisiert. D. h., wenn Du sie jetzt hochzählst, dann steht da 2 beim ersten Durchlauf. Aber Du machst das ja, damit Du auf dem Bildschirm siehst, wie weit er ist. Daher entweder die Variable mit 0 initialisieren oder am Ende der Schleife hochzählen.

Das ist vollkommener Unsinn. Warum verdoppelst Du die Variable? Du könntest auch mit $_ weitermachen. Aber, wenn Du meinem Vorschlag folgst, dann hast Du die Daten ja schon in $mbx.

OK

Und nun zum Wegschreiben. Du schreibst einfach jede einzelne Zeile in das CSV und sammelst sie nicht in erst in einem Array aus Objekten. Das spart Speicher und geht im Zweifel schneller:

Warum allerdings die von Dir vorgegebene Reihenfolge vertauscht wird, ist mir schleierhaft.

Liebe Grüße

Erik

P.S.: Bitte Skripte in Code-Tags (Symbol </>) einschließen. Das liest sich leichter.
Mitglied: colinardo
Lösung colinardo 17.09.2021 aktualisiert um 11:50:23 Uhr
Goto Top
Und noch als weiterer Hinweis, das hier ist überflüssig, da TotalItemsize schon über eine entsprechende Methode zur Umwandlung in der Value Property besitzt
$size = [math]::Round(($mbs.TotalItemSize.ToString().Split('(')[1].Split(' ')[0].Replace(',','')/1MB),2)

Liefert schon das gewünschte und macht das Stringgewurschte überflüssig.

Als Einzeiler reduziert sich das ganze bspw. auf folgendes ...


Grüße Uwe
Heiß diskutierte Beiträge
question
Windows 11 Upgrade nicht möglichben1300Vor 1 TagFrageWindows 1114 Kommentare

Guten Morgen ! ich habe einen Gaming PC, mit folgende Spezifikationen: Leider kann ich diesen nicht auf Windows 11 upgraden: Welche Optionen bleiben mir, um ...

question
Was ich benötige ist ein guter Wechselrahmen 5,25"Lefty0815Vor 1 TagFrageFestplatten, SSD, Raid8 Kommentare

Hallo an alle, ich such mir noch einen Wolf :-) Was ich benötige ist ein Wechselrahmen 5,25" für eine zwei oder drei 3,5Zoll Festplatten (SATA ...

question
Exchange Server - Wege, anonymes Senden zu verbietenDerWoWussteVor 1 TagFrageExchange Server11 Kommentare

Ich grüße Euch! Ziel 1: Alle PCs sollen Warnmeldungen per E-Mail geskriptet und anonym versenden können. In diesen Skripten handelt das Computerkonto und im Skript ...

question
Neuinstallation NetzwerkBurQueVor 13 StundenFrageNetzwerkgrundlagen13 Kommentare

Hallo ich hab die Aufgabe bekommen ein Netzwerk in einem neuen Gebäude einzurichten bzw. mir dazu Gedanken zu machen. Raumsituation. Im Keller steht ein Serverschrank ...

question
WLAN Lösung für Gästehaus Vereinjohannes-meyerVor 22 StundenFrageLAN, WAN, Wireless8 Kommentare

Hallo, ich betreue die IT eines Vereins, der zwei Gebäude mit Gästebetrieb betreibt. Es sind regelmäßig an die 30 bis 50 Geräte verbunden. Ich hab ...

question
SMTP Relay Server gelöst MacLeodVor 1 TagFrageExchange Server10 Kommentare

Hallo zusammen. Vorwort: Habe das hier bei Exchange eingeteilt, betrifft aber Mailserver Versand allgemein. Bei einem Kunden mit einem Kerio Mailserver werden neben dem üblichen ...

question
Drei Fragen zum Internet Explorer gelöst UserUWVor 22 StundenFrageWebbrowser4 Kommentare

1) Der IE lässt sich unter Windows 10 deaktivieren, aber nicht physisch deinstallieren. Heißt das, dass IE-Funktionalitäten "unter der Haube" auch von Windows 10 genutzt ...

question
Powershell Befehl (nicht Script) als Admin ausführen, wie geht das? gelöst instinctlessVor 1 TagFrageBatch & Shell5 Kommentare

Hallo, ich würde gerne einen wmi befehl im ISE ausführen. Für diesen benötige ich admin Rechte. Nun will ich nicht jedes Mal das ISE vorher ...