Share via


[SharePoint 2013/2010] - Número de elementos totales dentro de un SiteCollection

Hola de Nuevo,

          No sé si habéis tratado alguna vez de restaurar los permisos de un subsitio de SharePoint al que un usuario descuidado le ha quitado la opcion de "no heredar permisos" y los ha perdido todos. No existe manera Out of the Box the restaurar solo los permisos de un sitio o subsitio. Se podría realizer un proceso de restore en otra granja y tartar de sincronizar los permisos del sitio de Producción con el de contingencia, pero eso lo dejo para otro día.

        Existe una herramienta que te permite hacer esto, no voy a hacer publicidad, pero es muy conocida y si buscais por ahí, seguro que la encontrais, debe haber una versión de prueba o algo así. El caso es, que el backup de dicha herramienta ocupa mucho espacio, hemos visto que depende del número de elementos y de los permisos únicos, con lo que hemos hecho un script para sacar el número de elementos totales por SiteCollection, inlcuyendo todas las librerías, subsitios y subsitios de subsitios. Os lo pongo a continuación por si os sirviera para algo.


Add-PSSnapin microsoft.sharepoint.powershell
$WebApps = Get-SPWebApplication
foreach ($WebApp in $WebApps)       #Recorre las WebApps
    {
    $siteCollection=$webApp.Sites
    foreach ($Site in $SiteCollection)    #Recorre los SiteCollection de las WebApps
        {
        $NumeroElementos=0
        $AllWebs=$site.AllWebs
        Foreach ($web in $AllWebs)      #Recorre los sitios de los site collections
            {
            $SubWebs=$site.Webs
            Foreach ($subweb in $subWebs)    #Recorre los subsitios de los sitios
            {
            $subLists= $subweb.lists
            Foreach ($sublist in $sublists)       #Recorre las listas de los subsitios
                {
                $NumeroElementos=$NumeroElementos+$subList.ItemCount          #suma los elementos a la variable NumeroElementos.
                }
            }
            $Lists= $web.lists
            Foreach ($list in $lists)
                {
                $NumeroElementos=$NumeroElementos+$List.ItemCount
                }
            }
        Write-host $Site.URL " Numero de elementos: " $NumeroElementos
        }

    }