Exchange Management Shell Script für Benutzerpostfächer
Hallo zusammen,
ich suche ein Script für den Exchange Server um z.B. die Postfachgröße auslesen zu können.
Mein Ziel ist es hierbei ein Skript auszuführen welches als erstes nach dem Namen des Benutzers oder Postfachs fragt.
Im Anschluss soll eine Auswahlmöglichkeit bereitstehen wo z.B.
1 -> Postfachgröße anzeigen
2 -> E-Mail Adresse ändern
3 -> Online-Archiv aktivieren
4 -> Skript beenden.
Ist dies einfach möglich? Jedes mal die Shell zu öffnen und die Befehle einzeln einzugeben ist sehr Zeitaufwändig.
Da die Benutzeranzahl bei mehr als 1000 liegt könnte so viel Zeit eingespart werden.
Danke für eure Hilfe
LG Dan
ich suche ein Script für den Exchange Server um z.B. die Postfachgröße auslesen zu können.
Mein Ziel ist es hierbei ein Skript auszuführen welches als erstes nach dem Namen des Benutzers oder Postfachs fragt.
Im Anschluss soll eine Auswahlmöglichkeit bereitstehen wo z.B.
1 -> Postfachgröße anzeigen
2 -> E-Mail Adresse ändern
3 -> Online-Archiv aktivieren
4 -> Skript beenden.
Ist dies einfach möglich? Jedes mal die Shell zu öffnen und die Befehle einzeln einzugeben ist sehr Zeitaufwändig.
Da die Benutzeranzahl bei mehr als 1000 liegt könnte so viel Zeit eingespart werden.
Danke für eure Hilfe
LG Dan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 297009
Url: https://administrator.de/forum/exchange-management-shell-script-fuer-benutzerpostfaecher-297009.html
Ausgedruckt am: 10.05.2025 um 18:05 Uhr
3 Kommentare
Neuester Kommentar
Hallo Dan,
hier mal schnell was für die EMC zusammengeschrieben und für dich zum Basteln und ausarbeiten (Kommentare siehe Code)
Grüße Uwe
hier mal schnell was für die EMC zusammengeschrieben und für dich zum Basteln und ausarbeiten (Kommentare siehe Code)
# Skriptblock-Funktion zum generieren des Hauptmenüs
$menu = {
cls
write-host "$('='*20) Hauptmenü $('='*20)`n" -ForegroundColor Yellow -BackgroundColor DarkRed
write-host "Benutzer: $($script:user.SamAccountname) / $($script:user.PrimarySmtpAddress)`n`n" -F Green
write-host "`t[1] Postfachgröße anzeigen`n`n"
write-host "`t[2] E-Mailadresse ändern`n`n"
write-host "`t[3] Online-Archiv aktivieren`n`n"
write-host "`t$('-'*25)`n`n"
write-host "`t[4] Benutzer wechseln`n`n"
write-host "`t[5] Skript beenden`n`n"
Do{
$mitem = read-host "Ihr Auswahl [1-5]"
if ($mitem -notmatch '^[1-5]$'){
write-host "Falsche Eingabe" -F Yellow
}
}until($mitem -match '^[1-5]$')
return $mitem
}
# While Schleife für das Hauptmenü das solange wiederholt wird bis der User den Abbruchbefehl per Menü gibt
while($true){
# Wenn bereits ein User ausgewählt wurde
if ($script:user){
# Zeige Hauptmenü /zurückgegeben wird die Aktionsnummer
$menuitem = .$menu
# Je nach Nummer die entsprechende Aktion ausführen
switch($menuitem){
# Mailboxstatistik anzeigen
1{
write-host "`nLese Mailboxstatistik...`n"
$script:user | Get-MailboxStatistics | fl ItemCount,TotalItemSize,TotalDeletedItemSize
Read-host "Enter drücken um fortzufahren"
}
# Neue primäre E-Mail-Adresse setzen
2{
$newmail = Read-host "Neue E-Mailadresse eingeben"
Set-Mailbox $script:user.SamAccountName -EmailAddressPolicyEnabled $false -PrimarySmtpAddress $newmail
$script:user = Get-Mailbox $script:user.SamAccountName
write-host "Neue primäre E-Mailadresse lautet: '$($script:user.PrimarySmtpAddress)'" -F Green
Read-host "Enter drücken um fortzufahren"
}
# Archiv-Mailbox aktivieren
3{
write-host "`nOnline-Archiv aktivieren..."
Enable-Mailbox $script:user.SamAccountName -Archive
$script:user = Get-Mailbox $script:user.SamAccountName
$script:user | fl ArchiveName,ArchiveDatabase
Read-host "Enter drücken um fortzufahren"
}
# Fokus auf neuen User setzen
4{
$script:user = $null
}
# User wünscht Abbruch
5{
write-host "Programm beendet"
return
}
}
}else{
# Noch keine Mailbox ausgewählt, fordere den User auf eine Mailbox auszuwählen.
cls
$inp = Read-host "Geben sie den Usernamen/Alias oder den Teil des Namens eines Exchange-Benutzers ein"
# Usermailbox suchen
$script:user = Get-Mailbox -ResultSize Unlimited | ?{$_.SamAccountName -eq $inp -or $_.Alias -eq $inp -or $_.Name -like "*$inp*"}
# gibt es einen User
if ($script:user){
# gibt es mehrere User zeige eine Auswahl der gefundenen User
if ($script:user.length -gt 1){
write-host "----------- Gefundene Mailboxen: -----------`n" -ForegroundColor Yellow
$cnt = 0
$script:user | %{
$cnt++
"`t[$cnt] Username: $($_.SamAccountname) , e-Mail: $($_.PrimarySmtpAddress)`n"
}
Do{
$itm = read-host "Ihr Auswahl [1-$cnt]"
if ($itm -ge 1 -and $itm -le $cnt){
$script:user = $script:user[$itm-1]
}else{
write-host "Falsche Auswahl" -F Yellow
}
}until($itm -ge 1 -and $itm -le $cnt)
}
}else{
# Keine Mailbox gefunden
write-host "Keine Mailbox mit dem Namen gefunden!" -F Red
read-host "Enter drücken um erneut zu suchen"
}
}
}
Kommt hier noch Rückmeldung ??
Wenn nicht, den Beitrag bitte noch auf gelöst setzen. Merci.
Wenn nicht, den Beitrag bitte noch auf gelöst setzen. Merci.