sdecoret - stock.adobe.com

Automatisiertes Erstellen und Bereitstellen von Exchange-Postfächern

Das Anlegen von Benutzerkonten und Zuweisen von Benutzerrechten mit der PowerShell sowie der Exchange-Verwaltungsshell lässt sich automatisieren.

In vielen Exchange-Umgebungen erstellen Active-Directory-Teams neue Benutzerkonten, die Postfächer werden wiederum durch den Exchange-Administrator erstellt. In anderen Firmen sind Exchange- und Active-Directory-Verantwortliche dagegen identisch. 

In beiden Fällen ist es sinnvoll, Postfacherstellung und Bereitstellung zu automatisieren. Die Aufgabe lässt sich in vier Schritten mit der Exchange-Verwaltungsshell abschließen.

Schritt 1: Erstellen Sie ein PowerShell-Skript

Ziel ist es, die Postfachbereitstellung vollständig zu automatisieren. Da das mehrere Befehle benötigt, macht es Sinn, ein PowerShell-Skript zu verwenden.

Hier können Sie alle notwendigen Befehle aufrufen und so die Erstellung vollständig automatisieren. Verwenden Sie einen Text- oder Skript-Editor, um ein neues Skript zu erstellen und benennen Sie es zum Beispiel NewMailboxes.ps1. Sie können dazu die integrierte PowerShell Integrated Script Engine (ISE) verwenden. Stellen Sie aber vorher sicher, dass ihre Server das PowerShell-Skript ausführen.

Um zu beginnen, verwenden Sie das Cmdlet Get-ExecutionPolicy, um Ihre aktuellen Ausführungsrichtlinien zu bestimmen. Mehr darüber finden Sie im Microsoft TechNet.

Schritt 2: Definieren Sie eine Datenquelle für das Skript

Die Datenquelle für unser Skript sind neue Benutzer. Wenn diese Benutzer bereits in Active Directory vorhanden sind, ist das eine einfache Aufgabe. Die Exchange-Verwaltungsshell hat einen integriertes Cmdlet mit der Bezeichnung Get-User. Dieses verfügt über native Filterfunktionen. Ein Beispiel für die Verwendung ist:

Get-User -RecipientTypeDetails User -OrganziationalUnit company.local/sales

Dieser Befehl ruft der Active-Directory-Benutzer aus der Organisationseinheit Sales ab. Da der Parameter -RecipientTypeDetails auf Benutzer gesetzt ist, werden nur die ersten 1.000 Benutzer in der Vertriebsorganisationseinheit ohne Postfach angezeigt. Sie können auch den -ResultSize Parameter hinzufügen und entweder einen bestimmten Wert oder Unlimited angeben.

Wenn Benutzer in Active Directory nicht vorhanden sind, ist eine CSV-Datei empfehlenswert. Sie können Dateien manuell oder mit einem Texteditor erstellen, wobei Microsoft Excel zu empfehlen ist.

Erstellen Sie ein neues Arbeitsblatt und fügen Sie mehrere Spalten ein, welche die Einstellungen für jedes Postfach definieren. Wenn Sie zum Beispiel einen Postfach-aktivierten Active-Directory-Benutzer erstellen wollen, müssen Sie Informationen wie Name, Alias und User Principal Name (UPN) bereitstellen.

Sie können auch andere Parameter hinzufügen. Hier sehen Sie, wie eine Beispieldatei aussehen könnte und welche Daten mindestens enthalten sein sollten:

Name Alias UPN
Jerald Franklin Jfranklin [email protected]
Patti Byrd Pbyrd [email protected]
Christopher Beasley Cbeasley [email protected]
Woodrow Stevenson Wstevenson [email protected]

Denken Sie daran, das Cmdlet New-Mailbox verfügt über mehr als 50 verfügbare Parameter. Sie können die CSV-Datei leicht erweitern. Speichern Sie die Tabelle als kommagetrennte CSV-Datei. Diese importieren Sie in die EMS mit dem folgenden Cmdlet:

Import-CSV c:\new_users.csv -NoTypeInformation

Dieser Befehl verwendet jede Zeile in der CSV-Datei als Objekt in der Exchange-Verwaltungsshell. Jedes Objekt verfügt über drei Eigenschaften: Name, Alias und UPN. Das sind die Daten, die Sie in der CSV-Datei angegeben haben.

Jedes Objekt wird durch den Spaltennamen in der CSV-Datei definiert. Der nächste Schritt besteht darin, die Ergebnisse und die Bereitstellung eines neuen Postfachs für jeden Benutzer zu verarbeiten.

Schritt 3: Verwenden Sie die Datenquelle, um die Postfächer zu erstellen

Da die Datenquelle als Liste der Benutzerkonten aus dem Active Directory abgerufen wird, müssen Sie den folgenden Befehl eingeben, um die Postfächer zu erstellen:

Get-User –RecipientTypeDetails User –OrganziationalUnit company.local/sales | Enable-Mailbox

Die Ausgabe (Benutzerkonten) aus dem ersten Befehl wird an das Cmdlet Enable-Mailbox übergeben, welches wiederum Postfächer für jeden Benutzer erstellt. Außerdem können mehrere Parameter an das Cmdlet Enable-Mailbox hinzugefügt werden, um zusätzliche Einstellungen zu definieren. Das Skript lässt sich also beliebig mit weiteren Cmdlets oder zusätzlichen Parametern erweitern.

Die Bereitstellung neuer Postfächer erfordert häufig mehrere Aufgaben. Der erste Schritt besteht darin, das Postfach zu erstellen. Aber Sie können auch weitere Aufgaben für Postfächer automatisieren, zum Beispiel das Hinzufügen zu einer Verteilergruppe oder das Ausführen eines zusätzlichen Befehls. Lassen Sie uns das vorheriges Codebeispiel dafür erweitern:

Get-User -RecipientTypeDetails User -OrganziationalUnit company.local/sales | %{

  $mb = Enable-Mailbox $_

  Add-DistributionGroupMember -Identity Sales -Member $mb

}

Dieses Mal habe ich die Ausgabe von Get-User zum Prozentzeichen (%) gepiped. Das Prozentzeichen ist ein Alias für das Cmdlet ForEach-Object. Dadurch können Sie mehrere Befehle in einem Skript-Block (der Code innerhalb der Klammern) für jeden Benutzer ausführen.

Innerhalb des Skriptblocks verwende ich zwei Kommandos: Eines für das Erstellen des Postfach und eines, um das neu erstellte Postfach in die Sales Verteilergruppe hinzuzufügen. Beachten Sie, dass ich das Eingangsobjekt (der Benutzer, der über die Pipeline geschickt wurde) mit der Variable $_ verwiesen habe. Dies ist eine temporäre Variable; sie erlaubt es Ihnen, jeden Benutzer zuzuweisen, wenn er über die Pipeline kommt.

Bei der Verwendung einer CSV-Datei können Sie einen ähnlichen Ansatz verwenden. Sie können die Datei importieren, jede Zeile durchlaufen und die erforderlichen Benutzerkonten und Postfächer erstellen. Auch hier können Sie das Cmdlet ForEach-Object verwenden, um die Sammlung von Objekten zu verarbeiten:

Import-CSV c:\new_users.csv –NoTypeInformation | %{

  $password = ConvertTo-SecureString P@ssw0rd –AsPlainText –Force

  $mb = New-Mailbox –Name $_.Name –UserPrincipalName $_.UPN –Password $password

  Add-DistributionGroupMember -Identity Sales -Member $mb

}

Dem Cmdlet New-Mailbox müssen Sie ein Passwort als sicheres String-Objekt zuweisen. Daher habe ich drei Befehle innerhalb des Skriptblock verwendet. Ein Befehl erstellt ein erstes sicheres Passwort-Objekt, der zweite erstellt das Postfach und der dritte Befehl fügt das Postfach der Gruppe Sales hinzu.

Beachten Sie, dass ich die Variable $ _ erneut verwendet habe. Dieses Mal greife ich auf die Eigenschaften der Variable $_ zu, die direkt den Spaltenüberschriften in der CSV-Datei zugeordnet sind.

Schritt 4: Planen Sie die automatische Ausführung des Skripts

Um das Script zu automatisieren, fügen Sie einfach einen neuen geplanten Task hinzu. Stellen Sie sicher, dass Sie PowerShell.exe und dass neue Provisioning-Script angeben. Sie müssen steuern, wie der Befehl ausgeführt werden soll. Hier ist ein Kommandozeilenansatz zur Verwendung des schtasks.exe-Dienstprogrammes um die Aufgabe zu erstellen:

schtasks /create /tn "Mailbox Provisioning" /tr

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command

c:\NewMailboxes.ps1" /sc daily /st 00:00 /rl highest

In diesem Beispiel habe ich eine Aufgabe mit der Bezeichnung Mailbox Provisioning erstellt, welches das NewMailboxes.ps1-Script täglich um 12:00 ausführt.

Es ist bequemer, geplante Aufgaben mit der grafischen Oberfläche des Aufgabenplaners zu verwalten, aber dieser Befehl gibt Ihnen eine Vorstellung davon, welche Einstellungen Sie verwenden sollten. 

Außerdem können Sie auf diese Weise auch diesen Bereich automatisieren. Wenn Sie sich entscheiden, die CSV-Datei zu verwenden, überschreiben Sie diese mit einer neuen Gruppe von Benutzern bevor das Skript am nächsten Tag wieder ausgeführt wird.

Zusätzlich zur Überprüfung Ihrer Ausführungsrichtlinie, sollten Sie sicherstellen, dass die Exchange-Verwaltungsshell ebenfalls startet, wenn das Skript ausgeführt wird. Dies kann zu Beginn des Skripts oder aus einem Profil, das mit dem Benutzerkonto verbunden ist, ausgeführt werden.

Über den Autor:
Mike Pfeiffer ist Microsoft Certified Master on Exchange und Exchange Profi. Neben seiner Tätigkeit als Autor und Konferenzredner bietet er durch das Interface Technical Training Programm Kurse für Exchange, Lync und PowerShell an. Sie können mehr über ihn und über Themen wie Exchange Server und PowerShell in seinem Blog erfahren: mikepfeiffer.net.

Erfahren Sie mehr über Collaboration-Software