Estimar el espacio ocupado de un sitio no es algo fácil de obtener ya que
cada estructura de sitio y de las listas y bibliotecas de SharePoint ocupan un
espacio no determinado del todo. Lo que mejor podemos hacer es sumar el espacio
de los archivos almacenados en las bibliotecas de SharePoint.
Este script corre en SharePoint 2010 y estimo también en 2013.
A continuación veremos un script que recorre todos los sitios de una
colección de sitios:
-----Inicio del script ListadoSitios.ps1 -----
$File = "D:\scripts\MiSitio-EspacioOcupado.CSV"
#Escribimos el encabezado en el
archivoAdd-Content -Path $File -Value "Titulo,Url,Size,LastDate"
#definimos la fecha más antigua para
que tengamos un punto de comparación inicial la definimos global para que
podamos obtener su valor fuera del método donde se asigna.
$global:LastDate = Get-Date
$global:LastDate =
$global:LastDate.AddDays(-10000)
#Método que Obtiene el sitio primario
y llama el método que obtenien los sub.sitios.
function GetWebSizes ($StartWeb)
{
$web = Get-SPWeb
$StartWeb
GetSubWebSizes -Web $web
$web.Dispose() # Importante destruir el objeto SPWeb para
liberar la memoria RAM
}
Cuando utilizar el Dispose en el siguiente enlace: https://blogs.technet.microsoft.com/stefan_gossner/2008/12/05/disposing-spweb-and-spsite-objects/
function GetSubWebSizes ($Web)
{
#Inicializamos nuevamente la
fecha de partida para comparación
$global:LastDate =
Get-Date
$global:LastDate = $global:LastDate.AddDays(-10000)
#Recorremos cada subsitio de forma
recursiba
foreach ($subweb in
$Web.GetSubwebsForCurrentUser())
{
[long]$webtotal =
0
#Recorremos cada carpeta
del subistio para obtener el espacio ocupado
foreach ($folder in
$subweb.Folders)
{
$webtotal += GetFolderSize -Folder
$folder
}
$content = $subweb.Url + "," + $subweb.Title + ","
+ $webtotal + "," + $global:LastDate
Add-Content -Path $File -Value
$content
write-host $content
#LLamada recursiva al mismo
método
GetSubWebSizes -Web $subweb
}
}
function GetFolderSize ($Folder)
{
[long]$folderSize = 0
foreach ($file in $Folder.Files)
{
#Compara la fecha de la ultima modificación del archivo con la fecha
de punto de partida y si es mas reciente la del archivo entonces la
reemplaza
if ($file.TimeLastModified -gt $global:LastDate){
$global:LastDate = $file.TimeLastModified
}
#Acumula el
valor de cada archivo en bytes
$folderSize += $file.Length;
}
foreach ($fd in $Folder.SubFolders)
{
$folderSize +=
GetFolderSize -Folder $fd
}
return $folderSize
}
GetWebSizes -StartWeb HTTP://MiSharePoint
-----fin del script ListadoSitios.ps1 -----
Si necesitamos recorrer todas las colecciones de sitio solo hay que agregar
las siguientes lineas de comando:
function GetWebSizes ($StartWeb)
{
$sites = Get-SPSite –StartWeb -Limit All
foreach($site in $Sites){
$web = $site.RootWeb
GetSubWebSizes -Web $web
$web.Dispose() # Importante destruir
el objeto SPWeb para liberar la memoria RAM
}
}
Eso es todo amigos. SharePoint4Fun!,
Juan Manuel Herrera Ocheita
No hay comentarios.:
Publicar un comentario