Powershell verwaltet Sharepoint
16. Juli 2010Eine der größten Investitionen von Microsoft bei der Entwicklung von Sharepoint 2010 war die Unterstützung der Powershell für die Verwaltung des Systems. Selbst wenn ein Administrator bislang die Powershell noch nicht verwendet, wird er sehr schnell viele Verwaltungsaufgaben damit erledigen können. Denn die einzelnen Befehle (sie werden als Cmdlets bezeichnet) mit ihrer logischen Benennung und die objektorientierte Struktur der Powershell machen einem die Einarbeitung sehr einfach.
Generelle Hinweise zur Powershell finden sich auf NT4ADMINS zur genüge – speziell die Einsteigerserie sei einem Newcomer ans Herz gelegt. In diesem Beitrag rücken die Aspekte in den Fokus, die sich aus der Kombination aus Powershell und Sharepoint ergeben.
Um die Powershell im Zusammenspiel mit Sharepoint verwenden zu können, braucht man auf der betreffenden Sharepoint-Server-Farm die nötigen Berechtigungen. Daher ist ein passendes Delegationsmodell erforderlich. Damit ein Administrator die Powershell für die Verwaltung von Sharepoint einsetzen kann, muss er die Rolle SharePoint_Shell_Access für die Datenbanken zugewiesen bekommen haben, auf die die Powershell-Kommandos angewendet werden sollen.
Um zum Beispiel Aufgaben auszuführen, die Daten in der Konfigurationsdatenbank lesen oder gar ändern, muss der Administrator die Rolle SharePoint_Shell_Access für die Konfigurationsdatenbank zugewiesen bekommen haben. Ähnliches gilt für das Arbeiten an einer Site-spezifischen Collection: Der Administrator braucht die Rolle SharePoint_Shell_Access für die zugehörige Datenbank, in der die entsprechenden Inhalte liegen. Zudem sollte das Administrator-Konto auch Mitglied in der lokalen Gruppe WSS_ADMIN_WPG auf allen Servern in dieser Farm sein.
Um diese beiden Rollen zuzuweisen, kann man das Cmdlet Add-SPAdmin verwenden. Die zugehörige Syntax ist recht einfach. Zuerst ist die Verwaltungskonsole von Sharepoint 2010 zu öffnen. Dann muss man eine Variable anlegen, die sich auf die Inhaltsdatenbank bezieht, wie etwa auf die Inhaltsdatenbank mit dem Namen WSS_Content_Intranet. Das sieht dann wie folgt aus:
$spcdb = Get-SPContentDatabase WSS_Content_Intranet
Im nächsten Schritt ist dann der Einsatz des Cmdlet Add-SPAdmin nötig, um dem betreffenden Benutzer (hier im Beispiel ist es CONTOSO\Dan_Admin) die Fähigkeit einzuräumen, Powershell mit dieser Datenbank verwenden zu können:
Add-SPShellAdmin -username CONTOSO\ Dan_Admin -database $spcdb
Mit nur zwei Befehlen hat der Benutzer die Rolle SharePoint_Shell_Access für diese Datenbank nun zugewiesen bekommen und zudem wurde der Benutzer in der lokalen Gruppe WSS_ADMIN_WPG auf jedem Server in der Farm eingetragen. Falls der Benutzer bereits angemeldet ist, muss er sich erst ab- und danach wieder anmelden, damit diese Änderungen für die neuen lokalen Gruppenmitgliedschaften wirksam werden.
Um diese Delegationsaufgabe erledigen zu können, muss man allerdings die Rolle Security_Admin für die SQL-Instanz und die Rolle db_owner für die Datenbank haben und zudem Mitglied in der Administrator-Gruppe auf jedem Server in der Farm sein. Anders ausgedrückt: man muss ein „Super-Admin“ sein. In der Realität wird das der Administrator des SQL Servers sein und zudem ein Administrator auf jedem Server in der Farm sein. Doch aus technischer Sicht bräuchte man nicht soviel „Macht“.
Mehr Details dazu bietet der Technet-Beitrag "SharePoint 2010 Products administration by using Windows PowerShell."Damit bekommen Administratoren in einer Sharepoint-Umgebung eine elegante Methode in die Hand: Sie sind in der Lage, anderen Administratoren das Verwalten von Sharepoint mit Hilfe der Powershell zu erlauben. Das geht sogar soweit, dass sich auf diese Weise einige Aufgaben automatisierten lassen – den richtigen Einsatz der Powershell vorausgesetzt.
Doch leider hat die Sache auch eine Haken: Wer selbst der Administrator einer Sharepoint-Umgebung ist, der kann die Powershell erst dann benutzen, wenn er sich diese Fähigkeiten selbst delegiert. Das kann in einigen Situationen auch etwas schwieriger werden, etwa bei größeren Umgebungen, die das Prinzip der „Least Privilege“ verfolgen und in denen die SQL-Server-Farm und die Sharepoint-Server-Farm von verschiedenen Teams verwaltet werden. In derartigen Fällen muss man die gegenseitigen Privilegien genau definieren, damit es zu keinen widersprüchlichen Einstellungen kommt und damit alles korrekt funktioniert.
Generell ist aber für das Ausführen der Delegation wichtig: Es bedarf vergleichsweise hoher Berechtigungen sowohl auf Seiten der SQL Server (Security_Admin) als auch im Bereich von Sharepoint (die Gruppe der lokalen Administratoren).