Backup-Script (Powershell) für Sp2010 aller SiteCollections und Websites einer Web-Application

Die Aufgabe:

Backup aller SiteCollections einer Web-Application und Export aller einzelnen Unterwebsites der SiteCollection.

Zweck:

Schnelles wieder herstellen von einzelnen Webseiten und SiteCollections wird damit möglich. Es muss nicht umständlich in eine andere Datenbank wieder hergestellt werden, um von dort auf die benötigten Webseiten zu exportieren und dann wieder in die produktive Umgebung zu importieren.

Dazu wird ein Powershell-Script verwendet, welches auch in die Schedules-Tasks unter Windows-Server eingebunden werden kann:

# Das Script erwartet 2 Argumente beim Aufruf
# .\backup.ps1 <WebApplicationUrl> <PfadZumBackUpVerzeichnis>

# Einlesen des Powershell-Snapin für Microsoft Office SharePoint, wenn es nicht schon geladen ist
#
if ( (Get-PSSnapin -Name ‚Microsoft.SharePoint.PowerShell‘ -ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin -Name ‚Microsoft.SharePoint.PowerShell‘
}

# Übernehmen des Kommandozeilen-Arguments für die Web-Application[0] und den Backup-Pfad[1]
#
$siteUrl = $args[0]
$pfad = $args[1]

# Instanziieren des Web-Application Objekts
#
$rootSite = New-Object Microsoft.SharePoint.SPSite($siteUrl)
$spWebApp = $rootSite.WebApplication

# Durchlaufen aller SiteCollections in der Web-Application und Anlegen eines Backups mit dem Namen
# der obersten Website der SiteCollection (.bak) im Pfad, der als zweites Argument an das Script übergeben wurde

foreach($site in $spWebApp.Sites)

 $web = $site.OpenWeb()
 $Datei =$pfad + $web.Title + „.bak“ # erhaschen des Titels der Website auf oberster Ebene der SiteCollection
 write-host $Datei
 Backup-SPsite -Identity $site.url -Path $Datei –Force

 # Durchlaufen aller Webseiten der Site-Collection und Export dieser Webseiten
 #
 foreach($website in $site.Allwebs)
 {
  # Der Name der exportierten Webseite wird zusammengesetz aus <<Name der SiteCollection>-<Name der Website>>.exp
  #
  $Datei = $pfad + $web.Title + „-“ + $website.Title + „.exp“ # erhaschen des Titels der Website die als nächtes exportiert wird
  Export-SPweb -Identity $website.url -Path $Datei
 }
 $site.dispose()
}

# Anmerkungen
# Aufruf des Scripts:
# Vom CMD-Prompt oder aus einem Scheduled Task: powershell <pfad>\backup.ps1 <WebApplicationUrl> <PfadZumBackUpVerzeichnis>
#
# Wiederherstellen von SiteCollections
# Restore-SPSite –Identity http://servername/your/directory -Path <Pfad>\NameDerBackupDatei.bak –Force
#
# Wiederherstellen von WebSites
# Import-SPWeb –Identity http://servername/your/directory -Path <pfad>\NameDerBackupDatei.exp –Force -IncludeUserSecurity

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.