Export des sites (SPWeb) d’une collection SharePoint (SPSite) en PowerShell


SharePoint 2010 nous offre la possibilité de jouer avec PowerShell pour effectuer les tâches d’administration.

Je vous propose donc un petit script PowerShell pour exporter l’ensemble des sites d’une collection de site.

Commençons tout d’abord par afficher l’ensemble des sites d’une collection.

Rien de plus simple, depuis la console PowerShell SharePoint tapez :

Get-SPWeb -site « http://macollectiondesites »

Les différentes URL’s de vos sites vous sont renvoyées.

Notez que si vous avez de nombreux sous sites la commande ne vous retourne pas l’ensemble des URLs dans ce cas ajouter le commutateur -Limit ALL à votre commande.

Chouette, c’est un bon début. Maintenant nous allons utiliser la fonction ForEach-Object afin d’utiliser chaque URL retournée dans une autre commande.

Get-SPWeb -site « http://macollectiondesites » -Limit ALL | ForEach-Object { }

Le sigle « | » permet d’indiquer d’appliquer une autre commande suite à la première.

Dans les accolades nous allons devoir réaliser deux actions :

  1. Inscrire dans une variable un nom de fichier qui reprend l’url du site.
  2. Effectuer l’export du site à partir des URLs récupérées précédement et du nom de fichier créé

Tout d’abord, comment récupérer les diffrentes URL’s de la précédente commande, tout simplement en utilisant la variable $_.Url

OK, maintenant la commande pour créer un nom de fichier :

$filename = $_.Url.replace(« http:// », » »).replace(« _ », »__ »).replace(« /« , »_ ») + « .cmp »

Une URL du type http://macollectiondesites/mon_soussite/resousite sera transformée en mon__soussite_resousite.cmp parfait pour être utilisé comme nom de fichier.

Suite, la commande d’export d’un site SharePoint (SPWeb) :

Export-SPWeb $_.Url -Path $filename

Rien de compliqué.

Le final, on remet tout ça dans le bon ordre et on obtient :

Get-SPWeb -site « http://macollectiondesites » -Limit ALL | ForEach-Object { $filename = $_.Url.replace(« http:// », » »).replace(« _ », »__ »).replace(« / », »_ ») + « .cmp » ; Export-SPWeb $_.Url -path $filename}

Bien sur vous pouvez mixer la commande Export-SPWeb avec les commutateurs « -includeusersecurity »,  « – includeversions » , etc…

Bon export à tous.

Laisser un commentaire