SharePoint: Como obtener todas las listas de la granja con PowerShell!

En esta ocasión os dejo un script que permite obtener todas las listas de una granja de SharePoint (Versiones 2010 y 2013) sin incluir la Administración Central de SharePoint. El script está disponible en la galería de scripts de TechNet: Get all the lists in a SharePoint farm. Como siempre, espero que os sirva.

   1: ############################################################################################################################################

   2: # Script que obtiene todas las listas de una granja

   3: # Parametros necesarios:

   4: #   -> $sSiteUrl: Url del sitio del que se desean obtener las listas (si aplica)

   5: #   -> $sExportFileName: Nombre del archivo donde se van a exportar las listas inventariadas

   6: ############################################################################################################################################

   7:  

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

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

  10:  

  11: $host.Runspace.ThreadOptions = "ReuseThread"

  12: $ScriptDir = Split-Path -parent $MyInvocation.MyCommand.Path

  13:  

  14: function GetAllListsInAFarm

  15: {  

  16:     param ($sSiteUrl,$sExportFileName)

  17:     try

  18:     {        

  19:         $sOutputPath=$ScriptDir + "\" + $sExportFileName

  20:         [array]$lListsInSite = $null        

  21:         $iWebCount = 0 

  22:         $iListCount = 0

  23:         #Un sitio o todos?

  24:         if(!$sSiteUrl) 

  25:         { 

  26:             #Obtenemos todos los sitios

  27:             $spWebs = (Get-SPSite -limit all | Get-SPWeb -Limit all -ErrorAction SilentlyContinue) 

  28:         } 

  29:         else 

  30:         { 

  31:         #Obtenemos sólo el sitio indicado

  32:             $spWebs = Get-SPWeb $sSiteUrl 

  33:         }        

  34:         #Para cada sitio de SharePoint    

  35:         foreach($spWeb in $spWebs) 

  36:         { 

  37:             #Accedemos a todas las listas de cada sitio

  38:             $lLists = $spWeb.Lists    

  39:             Write-Host "Sitio de SharePoint "$spWeb.url -ForegroundColor Green            

  40:             foreach($lList in $lLists) 

  41:             { 

  42:                 $iListCount +=1   

  43:                 Write-Host " – "$lList.Title          

  44:                 $lListsInSite = new-object psobject

  45:             $lListsInSite | add-member noteproperty -name "Sitio de SharePoint" -value $spWeb.Url

  46:                 $lListsInSite | add-member noteproperty -name "Lista" -value $lList.Title

  47:                 $AllLists += $lListsInSite          

  48:             } 

  49:             $iWebCount +=1 

  50:             $spWeb.Dispose() 

  51:         }             

  52:         Write-Host "# de sitios de SharePoint accedidos: " $iWebCount 

  53:         Write-Host "# de listas:"$iListCount

  54:         #Guardamos en disco

  55:         $AllLists | export-csv -path $sOutputPath -notype

  56:         $AllLists = $null

  57:     }

  58:     catch [System.Exception]

  59:     {

  60:         write-host -f red $_.Exception.ToString()

  61:     }

  62: }

  63:  

  64: Start-SPAssignment –Global

  65: #Calling the function

  66: $sExportFileName="ListsInFarm.txt"

  67: GetAllListsInAFarm -sExportFileName $sExportFileName 

  68: Stop-SPAssignment –Global

  69:  

  70: Remove-PSSnapin Microsoft.SharePoint.PowerShell