Powershell für Exchange und SharePoint

Kraftpaket

Microsoft bietet für Exchange und Sharepoint Server 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 Administratoren kennen alle Commandlets und Optionen, die Exchange Server 2010 zur Verfügung stellt. Dafür bieten 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 Namen 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.

Einstieg und Abrufen von Hilfen

Haben Sie das gewünschte Commandlets 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 dieses Commandlets gibt es natürlich noch viele andere, zum Beispiel Start- und Stop-Commandlets oder Export und Import. Geben Sie nur den Commandlet-Befehl ein, passiert entweder überhaupt nichts, es alle Objekte der Organisation an oder Sie werden nach der Identität des Objektes 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 CMDlets gibt es noch die Option »help Commandlet -detailed« , der noch 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 zum Beispiel für das Postfach »user@contoso.com« nur den Displaynamen, die Datenbank, den Alias und die OU anzeigen, verwenden Sie den Befehl:

get-mailbox user@contoso.com |fl display↩
name, database, alias, organizationalunit

Groß- und Kleinschreibung spielen für die Commandlet keine Rolle. Führen Sie einen Assistenten in der Exchange-Verwaltungskonsole aus, zeigt dieser am Ende immer den dazugehörigen Befehl für die Powershell an, den Sie kopieren und 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 dazugehö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 dazugehörigen Befehl. Diese Funktion ist neu in Exchange Server 2010.

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

Klicken Sie in der Exchange-Verwaltungskonsole auf den Menüpunkt »Ansicht« und wählen B»efehlsprotokoll 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 dazugehörigen Befehle für die Verwaltungsshell. Sie können sich 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« können Sie die Bereitstellung einer Datenbank in der Befehlszeile aufheben. Sie müssen dazu lediglich den Namen der Datenbank mitgeben.

Ä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 Möglichkeit der Exchange-Verwaltungsshell ist das Auslesen der Postfächer innerhalb einer Postfachspeicherdatenbank. 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 den Befehl

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 Postfächer unter Exchange Server 2007 auch in der Exchange-Verwaltungsshell zwischen Postfachspeicherdatenbanken verschieben. In Exchange Server 2010 gibt es hierfür die Commandlets »New-MoveRequest« , »Get-MoveRequest« , »Remove-MoveRequest« . Sie können auch 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 lediglich, ob ein Verschieben möglich ist, und gibt eine ausführliche Informationsseite aus, welche Optionen durchgeführt würden, wenn die Option »-validateonly« nicht verwendet wird. 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 die 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 können Gruppen erstellen, Gruppenmitgliedschaften konfigurieren und so weiter. Sie können in der Exchange-Verwaltungsshell 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 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 den Befehl

Add-PSSnapin Microsoft.SharePoint.Powershell

Mit dem Befehl

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

erstellen Sie eine Text-Datei, die alle Commandlets für Sharepoint enthält. 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 der Powershell 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 die notwendigen Skripte für die Installation über die Powershell.

Im nächsten Schritt müssen Sie die Powershell so konfigurieren, 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 in das Verzeichnis »C:\Windows\System32\WindowsPowershell\v1.0\Modules« zu kopieren. In diesem Pfad liegen auch die anderen Module der Powershell. Wollen Sie die Sharepoint-Befehle nur für den aktuellen Benutzer verwendbar machen, kopieren Sie die Ordner in das Verzeichnis C»:\Users\<Benutzername>\Documents\WindowsPowershell\Modules« . Nachdem Sie die Module zum Pfad hinzugefügt oder kopiert sind, müssen Sie noch die Befehl 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 Cmdlet »Set-ExecutionPolicy« ändern und mit »get-executionpolicy« anzeigen. Die Ausführungsrichtlinie speichert ihre Daten in der Windows-Registrierung. Sie können folgende Einstellungen vornehmen:

  • »Restricted« : Standardeinstellung, keine Skripte 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 Zertifikatsstelle 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. Als nächstes 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 Informationenzu 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] können Sie die kostenlosen Sharepoint 2010 Powershell Scripts & Utilities herunterladen. 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.

Mit »Get-SPPrerequisites« können Sie die Voraussetzungen in der Powershell installieren 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 können. »Install-SPIFilter« installiert iFilter 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. Damit Sie die Befehle nutzen können, müssen Sie das Modul zunächst mit »import-module Pfad« in die Powershell laden. Für alle Tools gibt es auch eine Hilfe.

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

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 verschiedenen Befehl listet Tabelle 1 auf.

Neue Websitesammlungen erstellen Sie mit dem CMDlet New-SPSite, die Syntax für den Befehl ist »New-SPSite« . 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.

Tabelle 1

Installationsoptionen

Funktion

Aufruf

Serverfarm

»New-SharePointFarm -DatabaseServer Servername -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 Servername -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«

comments powered by Disqus
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Ausgabe  04/2014