La suppression d’une collection de site résulte généralement d’une mûre réflexion. Mais il peut aussi s’agir d’une erreur et là – évidemment – c’est la panique.

Avec le Service Pack 1 de SharePoint 2010 sont apparues des commandes PowerShell pour rattraper ce genre d’erreur. Heureusement je n’ai eu besoin de m’en servir qu’avec la version 2013.

  • Get-SPDeletedSite : lister les collections de site supprimées
  • Remove-SPDeletedSite : supprimer définitivement une collection de site
  • Restore-SPDeletedSite : restaurer une collection de site supprimée
Attention : j’ai vu plusieurs fois la ligne suivante: _Get-SPDeletedSite -Identity /url/relative Restore-SPDeletedSite_. Cela fonctionne uniquement si la ferme n’héberge qu’une seule web application. Et oui /url/relative peut désigner autant http://webapp1/url/relative que http://webapp2/url/relative**.**

Le script ci-dessous permet de restaurer un site supprimé à partir de son URL absolue.

# URL of the deleted site you want to restore
$url = "http://london/sites/site2";

# convert URL to URI object
$uri = [System.Uri]$url

# get everything before the query
$cleanURL = $uri.Scheme + "://" + $uri.GetComponents([System.UriComponents]::HostAndPort, [System.UriFormat]::UriEscaped);

# retrieve deleted site
$deletedSite = Get-SPDeletedSite -webapplication $cleanURL | Where-Object Url -eq $url
if($deletedSite -ne $null)
{
   try
   {
      Restore-SPDeletedSite -Identity  $deletedSite.SiteId -Confirm:$false
      write-host "site collection $url restored successfully." -ForegroundColor Green
   }
   catch
   {
      write-host "error during restoration of site collection $url : $error[0].Exception.Message" -ForegroundColor Red
   }
}
else
{
   write-host "site collection $url was not find" -ForegroundColor Red
}

Références:

Get-SPDeletedSite

Remove-SPDeletedSite

Restore-SPDeletedSite