SharePoint 2007: Script PowerShell permettant le backup de toutes les collections de sites d’une application Web
En tant qu’archéologue, il est indispensable de conserver un processus de sauvegarde valide et simple:
- La sauvegarde des Bases de données est simple, mais exige un niveau technique important en cas de besoin de restauration
- La sauvegarde de base de WSS est “simple”, mais complexe si on souhaite remonter une unique collection de site, de plus elle n’est pas adaptée pour de gros volumes
- La sauvegarde de chaque collection de site est simple à sauver et restaurer puisqu’on peut remonter une unique collection
Pour effectuer cette troisième option, il existe différentes solutions, dont des script VBS qui peuvent être complexes à maintenir. PowerShell permet d’avoir un script court et rapide pour effectuer simplement une sauvegarde STSADM pour chaque collection de sites en placant de fichier de sauvegarde dans le répertoire voulu.
# Shared Variables
$BackupPath = “\\MyFileServer\SHAREPOINT_BACKUP\MyFarmTOSave”
$StsAdmPath = "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\BIN"
function Start-Executable {
param(
[String] $FilePath,
[String[]] $ArgumentList
)
#source: http://windowsitpro.com/powershell/running-executables-powershell
$OFS = " "
$process = New-Object System.Diagnostics.Process
$process.StartInfo.FileName = $FilePath
$process.StartInfo.Arguments = $ArgumentList
$process.StartInfo.UseShellExecute = $false
$process.StartInfo.RedirectStandardOutput = $true
if ( $process.Start() ) {
$output = $process.StandardOutput.ReadToEnd() `
-replace "\r\n$",""
if ( $output ) {
if ( $output.Contains("`r`n") ) {
$output -split "`r`n"
}
elseif ( $output.Contains("`n") ) {
$output -split "`n"
}
else {
$output
}
}
$process.WaitForExit()
& "$Env:SystemRoot\system32\cmd.exe" `
/c exit $process.ExitCode
}
}
function BackUp-All-SiteCollections([string]$WebAppURL, [string]$webAppName)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
$Thesite = new-object Microsoft.SharePoint.SPSite($WebAppURL)
$oApp = $Thesite.WebApplication
$stsadmPath = $StsAdmPath +"\stsadm.exe"
foreach ($Sites in $oApp.Sites)
{
$UrlSplitted = $Sites.URL.split("/")
Write-Host "Site URL", $Sites.URL, $UrlSplitted.length
if($UrlSplitted.length -gt 0)
{
if($UrlSplitted.length -eq 3)
{
$RunstsadmParam = "-o backup -url "+ $Sites.URL +" -filename "+ $BackupPath +"\" + $webAppName + "\rootcollection.dat -overwrite "
}
else
{
$RunstsadmParam = "-o backup -url "+ $Sites.URL +" -filename "+ $BackupPath +"\" + $webAppName + "\" + $UrlSplitted[3] +"\"+ $UrlSplitted[4] +".dat -overwrite "
}
}
Write-Host " ----------------------------------------------- "
Write-Host "Start the process"
Write-Host $stsadmPath, $RunstsadmParam
Start-Executable $stsadmPath $RunstsadmParam
Write-Host " ----------------------------------------------- "
}
$Thesite.Dispose()
}
cls
BackUp-All-SiteCollections “http://MyWebApp01” "MyWebApp01"
BackUp-All-SiteCollections “http://MyWebApp02” "MyWebApp02"
Une fois ce script planifié quotidiennement, vous aurez dans le répertoire fourni, un fichier DAT pour chaque collection se sites en utilisant le nom de celle-ci pour nom du fichier.
Romelard Fabrice [MBA]
Commentaires
Enregistrer un commentaire