Mit der Version 2010 von Micrsofoft SharePoint ist Windows PowerShell das Hauptverwaltungswerkzeug abseits der Zentraladministration. Und auch wenn die Backup-Funktionalitäten deutlich erweitert wurden, gibt es nach wie vor keinen built-in Mechanismus, um regelmäßig Backups zu erstellen. Microsoft empfiehlt, dieses Ansinnen mittels eines PowerShell Skripts umzusetzen.
Überblick
Folgende Dinge werden benötigt, um ein automatisiertes Backup mittels PowerShell einzurichten:
- ein Benutzerkonto, dass nur für diesen Zweck verwendet wird. Dies ist zwar nicht zwingend erforderlich, jedoch sehr zu empfehlen.
- eine Dateifreigabe, in der die Backup-Dateien gespeichert werden mit Zugriffsrechten (NTFS und Freigabe) für den ausführenden Benutzer, das Dienstkonto der SharePoint Zentraladministration und das Dienstkonto der SQL Server Datenbankengine.
- ein PowerShell Skript, das ein Farm-Backup ausführt.
- eine geplante Aufgabe (Scheduled Task) die den zeitgesteuerten Aufruf des Skripts übernimmt.
Benutzerkonto anlegen und erste Rechte vergeben
Das Benutzerkonto für die Ausführung des automatisierten Backups sollte als normaler Domänenbenutzer angelegt werden. Anschließend ist dieses Konto auf dem SharePoint-Server, der das Backup ausführen soll (in einer Farm sinnvollerweise ein Applikationsserver), der Gruppe der lokalen Administratoren hinzuzufügen.
Als nächstes ist das Benutzerkonto der Gruppe der SharePoint Farm-Administratoren hinzufügen. Dazu könn der entweder die Zentraladministration oder der folgende PowerShell-Befehl (in der SharePoint Management Shell) verwendet werden:
New-SPUser -UserAlias mydomain\mybackuser -Web https://myCA:12345 -Group 'Farm Administrators'
Zusätzlich benötigt der Benutzer noch das Recht, überhaupt Windows PowerShell zum administrieren der SharePoint Farm verwenden zu dürfen, sowie Zugriffsrechte auf die einzelnen Datenbanken. Diese Rechte vergeben die folgenden beiden Befehle:
Get-SPDatabase | Add-SPShellAdmin -UserName mydomain\mybackuser
Dateifreigabe anlegen
Für das Farm-Backup wird eine Dateifreigabe benötigt, in der die resultierenden Datei abgelegt werden können. Um die beste Performance zu erreichen, sollte die Dateifreigabe auf dem Datenbankserver angelegt werden. In unserem Beispiel Skript verwenden wir jedoch den Applikationsserver. Folgende Rechte müssen vergeben werden:
- Lese- und Schreibberechtigungen für das Dienstkonto der SharePoint Zentraladministration (NTFS und Freigabe!)
- Lese- und Schreibberechtigungen für das Dienstkonto, in dessen Kontext die entsprechende SQL Server Datenbankengine ausgeführt wird (NTFS und Freigabe!)
- Lese- und Schreibberechtigungen für das das Backup-Skript ausführende Benutzerkonto (NTFS wenn Ausführungssystem und System das Freigabe hostet identisch, sonst NTFS und Freigabe. Sollen alte Backups gelöscht werden, dann auch Berechtigungen zum Löschen)
Backup PowerShell-Skript
Jetzt, da Berechtigungen und und andere Vorraussetzungen erfüllt sind, kann das eigentliche PowerShell Skript angegangen werden. Das folgende Skript lädt das benötigte Verwaltungsmodul, sofern es nicht bereits geladen ist, löscht alte Backups aus dem Zielverzeichnis und führt ein neuen Farm-Backup-Auftrag aus, der die maximale Anzahl an Threads verwendet (Standard: 3).
| 001 002 003 004 005
| if ( (Get-PSSnapin -Name 'Microsoft.SharePoint.PowerShell' -ErrorAction SilentlyContinue) -eq $null) { Add-PSSnapin -Name 'Microsoft.SharePoint.PowerShell' } Remove-Item -Path 'D:\Backup\*' -Recurse Backup-SPFarm -Directory '\\myappserver\Backup' -BackupMethod Full -BackupThreads 10 |
Dieses Skript sollte als *.ps1 Datei im lokalen Dateisystem des Applikationsservers gespeichert werden, z.B. als C:\Program Files (x86)\Adminscripts\BackupSharePointFarm.ps1.
Die geplante Aufgabe
Im letzten Schritt ist nun noch die geplante Aufgabe anzulegen. Dabei sind folgende Punkte zu berücksichtigen:
- Als ausführender Benutzer solte das eigens dafür erstellte Benutzerkonto konfiguriert werden.
- Die Aufgabe ist so zu konfigurieren, dass sie unabhängig von der Benutzeranmeldung ausgeführt wird.
- Ist die Benutzerkontensteuerung (User Account Control) aktiviert, ist das entsprechende Kontrollkästchen zu aktivieren, dass die Aufgabe mit erhöhten Rechten ausgeführt wird.
- Als Aktion ist das Starten eines Programms zu konfigurieren und zwar
“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” - Abschließend ist noch die folgende Zeichenkette von Argumente zu übergeben:
-ExecutionPolicy Bypass –File “C:\Program Files (x86)\Adminscripts\BackupSharePointFarm.ps1”
Die Intervalle können dabei selbstverständlich den eigenen Bedürfnissen angepasst werden. Sollen alte Backupstände nicht entfernt werden, kann im PowerShell-Skripte einfach die “Remove-Item”-Zeile entfernt oder auskommentiert werden.