iphonedan

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 face-smile


LG Dan
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

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

colinardo
Lösung colinardo 22.02.2016 aktualisiert um 19:35:44 Uhr
Goto Top
Hallo Dan,
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"  
        }
    }
}
Grüße Uwe
wuurian
wuurian 23.02.2016 um 11:54:50 Uhr
Goto Top
Hey,

"Exchange Reporter - Franky's Web" ist bei sowas auch ganz hilfreich, kannst du dir ja mal anschauen.

Gruß
colinardo
colinardo 02.03.2016 aktualisiert um 16:42:05 Uhr
Goto Top
Kommt hier noch Rückmeldung ??
Wenn nicht, den Beitrag bitte noch auf gelöst setzen. Merci.