Powershell für Exchange und Sharepoint

Antonio Munoz Palomares, 123RF

Kraftpaket

Microsoft bietet für Exchange und Sharepoint Server auch Powershell-Erweiterungen an, mit denen sich diese Serverprodukte auf der Kommandozeile verwalten lassen. Einige Einstellungen sind sogar nur in der Powershell-Erweiterung umzusetzen.

Generell ist der Umgang mit der Powershell nicht sehr kompliziert. Geben Sie »get-command« ein, zeigt die Shell alle verfügbaren Befehle. Die wenigsten Admins kennen alle Commandlets und Optionen, die Exchange Server 2010 bereitstellt. Dafür bietet die Verwaltungsshell eine ausführliche Hilfe an.

Wer sich nur an einen Teil eines Befehls erinnert, kann mit dem Platzhalter »*« arbeiten. Der Befehl »get-command *mailbox« zeigt zum Beispiel alle Commandlets an, deren Name mit "mailbox" endet. Ist der gesuchte Befehl nicht dabei, können Sie auch mehrere Platzhalter verwenden, zum Beispiel den Befehl »get-command *mailbox*« . Dieser Befehl zeigt alle Befehle an, in denen das Wort "mailbox" irgendwo vorkommt.

Haben Sie das gewünschte Commandlet gefunden, unterstützt die Powershell Sie mit weiteren Möglichkeiten. Für nahezu alle Commandlets gilt die Regel, dass diese in vier Arten vorliegen: Es gibt Commandlets mit dem Präfix »new-« , um etwas zu erstellen, zum Beispiel »new-mailbox« . Das gleiche Commandlet gibt es dann als Löschaktion mit »remove-« , zum Beispiel »remove-mailbox« . Um ein Objekt anzupassen, dient das Präfix »set-« , zum Beispiel »set-mailbox« . Schließlich gibt es noch das Commandlet »get-« , zum Beispiel »get-mailbox« , das einen Wert ausliest.

Neben diesen Commandlets gibt es noch viele andere, zum Beispiel Start- und Stop-Commandlets oder für Export und Import. Geben Sie nur den Commandlet-Befehl ein, passiert entweder überhaupt nichts oder es zeigt alle Objekte der Organisation an oder Sie werden nach der Identität des Objekts gefragt. So zeigt das Commandlet »get-mailbox« alle Postfächer der Organisation an. Mit dem Befehl »help Commandlet« erhalten Sie eine Hilfe zum entsprechenden Commandlet.

Für viele Commandlets gibt es noch die Option »help Commandlet -detailed« , die mehr Informationen liefert. Die Kombination »help Commandlet -examples« listet Beispiele für einen Befehl auf. Auch das funktioniert für alle Befehle in der Verwaltungsshell. Mit »get-Commandlet« lassen Sie sich Informationen zu Objekten anzeigen. Die Option »|fl« formatiert die Ausgabe. Wollen Sie aber nicht alle Informationen, sondern nur einzelne Parameter anzeigen, können Sie diese nach der Option »|fl« anordnen.

Wollen Sie etwa für das Postfach »user@contoso.com« nur den Displaynamen, die Datenbank, das Alias und die OU anzeigen, verwenden Sie den Befehl:

get-mailbox user@contoso.com |fl displayname, database, alias, organizationalunit

Groß- und Kleinschreibung spielen für die Commandlets keine Rolle. Führen Sie einen Assistenten in der Exchange-Verwaltungskonsole aus, zeigt dieser am Ende immer den zugehörigen Befehl für die Powershell an, den Sie kopieren und für weitere Aktionen nutzen können (Abbildung 1). Anhand dieser Befehle sehen Sie auch die Syntax, um zukünftig die eine oder andere Aufgabe in der Powershell anstatt in der grafischen Oberfläche durchzuführen.

Abbildung 1: In der Exchange-Verwaltungskonsole sehen Sie am Ende des Assistenten immer den zugehörigen Befehl für die Exchange-Verwaltungsshell.

Nehmen Sie Änderungen in der Exchange-Verwaltungskonsole vor, aktiviert sich bei jedem Fenster unten links das Symbol für die Exchange-Verwaltungsshell (Abbildung 2). Auch hier sehen Sie den zugehörigen Befehl. Diese Funktion ist neu in Exchange Server 2010.

Abbildung 2: Anzeigen der Befehle für die Verwaltungsshell in der Exchange-Verwaltungskonsole.

Mitgeschnitten

Klicken Sie in der Exchange-Verwaltungskonsole auf den Menüpunkt »Ansicht« und wählen »Befehlsprotokoll der Exchange-Verwaltungsshell anzeigen« , können Sie im neuen Fenster über »Aktion | Befehlsprotokollierung starten« ein Protokoll aktivieren. Nehmen Sie Änderungen in der Exchange-Verwaltungskonsole vor, speichert die Konsole die zugehörigen Befehle für die Verwaltungsshell.

Sie können in der Powershell auch alle Exchange-Datenbanken ausgeben, die auf den Servern Ihrer Organisation angelegt sind. Geben Sie dazu in der Exchange-Verwaltungsshell den Befehl »get-mailboxdatabase« ein. Sie erhalten eine formatierte Liste aller Postfachdatenbanken. Über den Befehl »dismount-database« heben Sie die Bereitstellung einer Datenbank in der Befehlszeile auf. Sie geben dazu nur den Namen der Datenbank an.

Ändern Sie den Befehl »dismount -database« in »mount-database« ab, damit die Datenbank wieder bereitgestellt wird. Sie erhalten bei der Bereitstellung keine weitere Meldung, können aber in der Exchange-Verwaltungskonsole auf [F5] klicken, damit der Status der Datenbank wieder als bereitgestellt angezeigt wird.

Eine weitere Funktion der Exchange-Verwaltungsshell ist das Auslesen der Postfächer innerhalb einer Postfachspeicher-Datenbank. Geben Sie den Befehl »get-mailbox« ein, erhalten Sie eine Liste aller Postfächer der Organisation. Sie sehen hier auch, auf welchem Server die einzelnen Postfächer liegen und ob ein Grenzwert eingetragen ist, der das Senden verbietet. Über

get-mailbox | format-table displayname, database

können Sie sich die Postfächer sortiert nach Postfachdatenbank und Anzeigenamen anzeigen lassen.

Über den Befehl »move-mailbox« konnte man unter Exchange Server 2007 Postfächer auch in der Exchange-Verwaltungsshell zwischen Postfachspeicher-Datenbanken verschieben. In Exchange Server 2010 gibt es hierfür jetzt die Commandlets »New-MoveRequest« , »Get-MoveRequest« , »Remove-MoveRequest« .

Administratoren können außerdem den Befehl

get-mailbox -database Mailbox | move-mailbox  -targetdatabase Mailbox Database

verwenden, um Postfächer aus der Postfachdatenbank »Mailbox« in die Postfachdatenbank »Mailbox Database« zu verschieben. Sie müssen das Verschieben noch bestätigen, danach beginnt der Exchange-Server mit dem Vorgang. Mit dem Befehl

get-mailbox -database Mailbox | move-mailbox -targetdatabase Mailbox Database-validateonly

verschiebt Exchange keine Postfächer, sondern überprüft nur, ob ein Verschieben möglich ist, und gibt ausführliche Informationen aus, welche Optionen durchgeführt würden, käme die Option »-validateonly« nicht zum Zuge.

Eine weitere Option in diesem Zusammenhang ist »-whatif« , die ähnlich funktioniert wie »-validateonly« , aber weniger Informationen ausgibt. Unabhängig davon, welche Optionen Sie verwenden, erhalten Sie ausführliche Informationen, was Exchange durchführen würde oder getan hat. Sie haben also die Möglichkeit, jene Daten, die Get-Commandlets auslesen, direkt an verarbeitende Commandlets umzuleiten.

Über die Exchange-Verwaltungsshell können Sie nicht nur auf Attribute innerhalb von Exchange zugreifen, sondern auch direkt auf das Active Directory. Sie erstellen Gruppen, konfigurieren Gruppenmitgliedschaften und so weiter. In der Exchange-Verwaltungsshell lassen sich auch Statistiken über die Postfächer in Ihrer Organisation abrufen. Geben Sie beispielsweise den Befehl »get-mailboxstatistics« ein, erhalten Sie ausführliche Informationen über die einzelnen Postfächer innerhalb der Exchange-Organisation. Der Befehl »get-mailboxstatistics | group database« gibt eine Statistik aus, gruppiert nach den einzelnen Postfachdatenbanken aus.

Powershell trifft Sharepoint

Auch in Sharepoint gibt es jetzt eine Erweiterung für die Powershell. Neben der Sharepoint-2011-Verwaltungsshell, gibt es auch in Sharepoint Server 2010 das Befehlszeilentool »stsadm.exe« im Verzeichnis »%COMMONPROGRAMFILES%\Microsoft Shared\Web server extensions\14\Bin« . Dieses Tool kommt in Sharepoint Server 2010 nur noch selten zum Einsatz, da die Sharepoint-Verwaltungsshell die Aufgaben des Tools übernommen hat. Um Powershell-Befehle für Sharepoint 2010 zu nutzen, müssen Sie über die Sharepoint-Programmgruppe die Verwaltungsshell starten oder die Befehle in eine normale Powershell laden.

Geben Sie dazu in der Powershell oder der Powershell ISE diesen Befehl ein:

Add-PSSnapin Microsoft.SharePoint.Powershell

Mit dem folgenden Befehl erstellen Sie eine Textdatei, die alle Commandlets für Sharepoint enthält:

gcm -pssnapin microsoft.sharepoint.Powershell | select name, definition | fl> .\SP2010cmdlets.txt

Die oben beschriebenen Möglichkeiten zum Anzeigen der Hilfe und der Syntax sind auch in der Sharepoint-Verwaltungsshell gültig. Die Lösungen der Farm zeigen Sie mit »Get-SPSolution« an, neue installieren Sie mit »Add-SPSolution WSP-Datei« . Features zeigt die Shell mit »Get-SPFeature« an.

Statt der herkömmlichen Installation von Sharepoint Server 2010 können Sie die Installation auch vollständig in der Powershell durchführen. Dazu benötigen Sie die Powershell-Erweiterung aus dem Archiv »SPModule.zip« . Hierbei handelt es sich um eine Erweiterung mit zusätzlichen Befehlen für Sharepoint. Dieses Paket stellen die Sharepoint-Entwickler auf der Seite [1] zur Verfügung. Laden Sie sich die Zip-Datei herunter und entpacken Sie das Archiv. Anschließend finden Sie innerhalb des Ordners die beiden Unterordner »SPModule.misc« und »SPModule.setup« . In diesen Ordnern befinden sich die notwendigen Skripte für die Installation über die Powershell.

Im nächsten Schritt konfigurieren Sie die Powershell so, dass sie die Skripte von Sharepoint verwenden kann. Dazu fügen Sie den Ordner, in dem sich die beiden Verzeichnisse »SPModule.misc« und »SPModule.setup« befinden, zum Eingabepfad der Powershell hinzu. Machen Sie das nicht, müssen Sie jeden Befehl aus den beiden Verzeichnissen inklusive des Pfads in der Powershell eingeben.

Die aktuellen Pfade, aus denen die Powershell Befehle entgegennimmt, können Sie sich mit den Befehl »$env:PSModulePath« anzeigen lassen. Mit dem folgenden Befehl erweitern Sie den Pfad:

$env:PSModulePath = $env:PSModulePath + Neuer-Pfad

Die einfachste Lösung ist es aber, die beiden Ordner »SPModule.misc« und »SPModule.setup« direkt ins Verzeichnis »C:\Windows\System32\WindowsPower- shell\v1.0\Modules« zu kopieren. In diesem Pfad liegen auch die anderen Module der Powershell. Sollen die Sharepoint-Befehle nur für den aktuellen Benutzer verwendbar sein, kopieren Sie die Ordner in das Verzeichnis C»:\Users\<Benutzername>\Documents\Windows-Powershell \Modules« .

Nachdem Sie die Module zum Pfad hinzugefügt oder reinkopiert haben, müssen Sie noch die Befehle zur Powershell hinzufügen. Die Skripte für Sharepoint sind allerdings nicht signiert, sodass die Shell eine Fehlermeldung ausgibt, wenn Sie die Befehle laden wollen.

Standardmäßig blockiert die Windows-Powershell nicht signierte Skripte über die Ausführungsrichtlinie. Sie können die Ausführungsrichtlinie mit dem Commandlet »Set-ExecutionPolicy« ändern und mit »get-executionpolicy« anzeigen. Die Ausführungsrichtlinie speichert ihre Daten in der Windows-Registrierung. Folgende Einstellungen sind möglich:

  • »Restricted« : Die Standardeinstellung, Skripte sind nicht erlaubt, Sharepoint-Skripte funktionieren nicht.
  • »AllSigned« : Nur signierte Skripte erlaubt. Auch hier funktionieren keine Sharepoint-Skripte, da diese nicht signiert sind.
  • »RemoteSigned« : Bei dieser Einstellung müssen Sie Skripte über eine Zertifizierungsstelle signieren.
  • »Unrestricted« : Mit dieser Einstellung funktionieren auch die Sharepoint-Skripte.

Nach der Eingabe von »Set-ExecutionPolicy unrestricted« müssen Sie die Ausführung noch bestätigen. Danach laden Sie mit »Import-Module SPModule.misc« die erste Erweiterung in die Powershell (Abbildung 3).

Abbildung 3: Konfigurieren der Powershell für die Unterstützung von Sharepoint Server 2010.

Als Nächstes laden Sie noch die notwendigen Befehle für die Installation mit »Import-Module SPModule.setup« . Wollen Sie Sharepoint Server 2010 remote über die Powershell installieren, hilft der Artikel [2] weiter, der zahlreiche Informationen zu diesem Thema enthält. Wichtige Befehle während der Installation von Sharepoint Server 2010 über die Powershell sind die drei Commandlets »install-sharepoint« , »new-sharepointfarm« und »join-shrepointfarm« .

Damit Sie die Installation über die Powershell durchführen können, benötigen Sie entsprechende XML-Antwortdateien. Diese befinden sich auf der Sharepoint-Server-2010-DVD im Verzeichnis »\Files« . Über diese Antwortdateien können Sie Sharepoint automatisiert installieren und konfigurieren. Die Installation starten Sie dann mit:

Install-SharePoint -SetupExePath Setup.exe -ConfigXmlPath XML-Datei

Sie können die XML-Datei an einen beliebigen Ort kopieren und an Ihre Bedürfnisse anpassen. Microsoft empfiehlt für die Bearbeitung der XML-Dateien die Verwendung des Editors.

Wollen Sie zum Beispiel den Produktschlüssel in die XML-Datei integrieren, setzen Sie noch den Pfad »<PIDKEY Value="Produktschlüssel" />« in die Datei ein. Wollen Sie die Installation ohne eine XML-Datei über die Powershell durchführen, können Sie die Option des Servers auch direkt mit dem Commandlet »Install-SharePoint« steuern.

Für einen eigenständigen Server lautet der Aufruf:

Install-SharePoint -SetupExePath Setup.exe -PIDKey "Produktschlüssel" -ServerRole"SINGLESERVER"

Für einen Farm-Server sieht der Befehl folgendermaßen aus:

Install-SharePoint -SetupExePath Setup.exe
 -PIDKey "Produktschlüssel"

Die Option »-PIDKey« funktioniert mit den Möglichkeiten der XML-Dateien oder durch direkte Eingabe des Servertyps. Von [3] lassen sich die kostenlosen Sharepoint 2010 Powershell Scripts & Utilities herunterladen (Abbildung 4). Diese können Sie als Modul in die Powershell laden und Installationspakete erzeugen beziehungsweise die Voraussetzungen von Sharepoint 2010 installieren. Die Tools erweitert die Powershell um zusätzliche Commandlets.

Abbildung 4: Verwenden der Sharepoint 2010 Powershell Scripts & Utilities.

Mit »Get-SPPrerequisites« ist es möglich, die Voraussetzungen in der Powershell installieren zu lassen. Dazu muss der Server Verbindung mit dem Internet haben. »New-SPInstallPackage« kann Installationspakete und Antwortdateien erstellen sowie Batchdateien, mit denen Sie Sharepoint 2010 automatisiert installieren. »Install-SPIFilter« installiert I-Filter von Drittherstellern und konfiguriert die Suche entsprechend. Sie finden auf der Seite auch entsprechende Anleitungen zu den Tools.

Kopieren Sie zur Installation zunächst die Moduldatei »SPInstallUtils« in ein Verzeichnis auf dem Server. Um die Befehle zu nutzen, müssen Sie das Modul zunächst mit »import-module Pfad« in die Powershell laden. Für alle Tools gibt es auch eine Hilfe.

Neben der Möglichkeit, notwendige Serverrollen über die Powershell zu installieren und Sharepoint Server 2010 ebenfalls über Powershell-Erweiterungen auf Servern bereitzustellen, haben Sie auch die Möglichkeit, den Konfigurationsassistenten für Sharepoint-Produkte über die Powershell auszuführen. Wollen Sie eine neue Serverfarm erstellen, verwenden Sie dazu das Commandlet »New-SharePointFarm« . Lassen Sie die Option »-FarmName« weg, erstellen Sie eine eigenständige Installation. Mit dem Commandlet »Join-SharePointFarm« treten Sie einer Serverfarm bei.

Mit dem Commandlet »New-SPWebApplication« erstellen Sie neue Webanwendungen in der Powershell. Die Syntax für die Befehle listet Tabelle 1 auf. Neue Website-Sammlungen erstellen Sie mit dem Commandlet »New-SPSite« , die Syntax für den Befehl ist »New-SPSite« .

Tabelle 1

Installationsoptionen

Funktion

Aufruf

Serverfarm

»New-SharePointFarm -DatabaseServer DB-Server -DatabaseAccessAccount Benutzername -FarmName Name der Farm«

Serverfarm mit Get-Credentials

»New-SharePointFarm -DatabaseAccessAccount (Get-Credential Domäne\Benutzername) -DatabaseServer Name -FarmName Name der Farm«

Eigenständige Installation

»New-SharePointFarm -DatabaseServer DB-Server -DatabaseAccessAccount Benutzername«

Einer Farm beitreten

»Join-SharePointFarm -DatabaseServer DB-Server -DatabaseName Datenbank -Passphrase Passphrase der Farm«

Neue Webanwendung

»New-SPWebApplication -Name Name -ApplicationPoolAccount (Get-SPManagedAccount Domäne\Benutzername«

Neue Website-Sammlung

»New-SPSite URL -OwnerAlias Domäne\Benutzername«

Die Standarddienste für Sharepoint installieren Sie mit dem Commandlet »Install-SPService« . Wollen Sie alle verfügbaren Sharepoint-Features installieren, verwenden Sie das Commandlet »Install-SPFeature -AllExistingFeatures« . Der Befehl »Get-SPFarm | select Servers« zeigt alle Server in der Farm an.

comments powered by Disqus

Artikel der Woche

Anti-Spam-SMTP-Proxy

Die Open-Source-Serverlösung Anti-Spam-SMTP-Proxy durchsucht als Filter zwischen dem Internet und dem lokalen E-Mail-Server alle E-Mails nach Spam. Unternehmen, die eigene E-Mail-Server einsetzen, erhalten eine kostenlose, aber leistungsfähige Anti-Spam-Lösung. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Ausgabe /2014

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit Rex
  • mit anderer Konfigurationsmanagement-Software