iphonedan
Goto Top

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

Content-Key: 297009

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

Printed on: April 20, 2024 at 01:04 o'clock

Member: colinardo
Solution colinardo Feb 22, 2016 updated at 18:35:44 (UTC)
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
Member: wuurian
wuurian Feb 23, 2016 at 10:54:50 (UTC)
Goto Top
Hey,

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

Gruß
Member: colinardo
colinardo Mar 02, 2016 updated at 15:42:05 (UTC)
Goto Top
Kommt hier noch Rückmeldung ??
Wenn nicht, den Beitrag bitte noch auf gelöst setzen. Merci.