SharePoint: Como borrar recursivamente los sitios de una colección mediante PowerShell!

En esta ocasión os dejo un script PowerShell que os permite borrar de forma recursiva los sitios de una colección de sitios. Como veis, se trata de hacer uso de Remove-SPWeb teniendo cuidado de no borrar el sitio raíz de la colección.

   1: If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) 

   2: { Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell }

   3:  

   4: #Hacemos un buen uso de PowerShell para no penalizar el rendimiento

   5: $host.Runspace.ThreadOptions = "ReuseThread"# Se crea el la aplicación del portal

   6:  

   7: #Definición de la función

   8: function Delete-Sites([Microsoft.SharePoint.SPWeb] $spWeb)

   9: {   

  10:     

  11:     $spsubWebs = $spWeb.GetSubwebsForCurrentUser()

  12:     

  13:     foreach($spsubWeb in $spsubWebs)

  14:     {

  15:         Delete-Sites($spsubWeb)        

  16:         $spsubWeb.Dispose()

  17:     }    

  18:     

  19:     #Borra,os los subsitios mientras no estemos en el sitio raíz

  20:     if($spWeb.Url -ne $sSiteCollUrl)        

  21:     {

  22:         Write-Host -f blue "Eliminado el sitio ($($spWeb.Url))..." 

  23:         #Borramos el objeto SPWeb del último nivel    

  24:         Remove-SPWeb $spWeb -Confirm:$false

  25:     }

  26: }

  27:  

  28: Start-SPAssignment –Global

  29: #Parámetros necesarios y llamada a la función

  30: $sSiteCollUrl = “http://<UrlColeccion>”

  31: $spSite = Get-SPSite -Identity $sSiteCollUrl

  32: $spWeb = $spSite.OpenWeb()

  33:  

  34: #Llamada a la función

  35: if($spWeb -ne $null)

  36: {

  37:     Delete-Sites $spWeb

  38:     $spWeb.Dispose()

  39: }

  40:  

  41: $spSite.Dispose()

  42:  

  43: Stop-SPAssignment –Global

  44:  

Espero que este script os sirva de utilidad.