Infos

Sie befinden sich aktuell in den Christian Brix Blog-Archiven für den folgenden Tag 16.9.2011.

Calendar
September 2011
M D M D F S S
« Mrz   Dez »
 1234
567891011
12131415161718
19202122232425
2627282930  

Archive für 16.9.2011

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

|