Elenco site collection e WEB con spazio occupato e data ultima modifica
Simile allo script precedente Elenco site collection con spazio occupato e data ultima modifica, solo che fa anche una stima dello spazio occupato dai singoli web (SPWeb):
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace ElencoSiteCollectionWeb
{
class Program
{
private static System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(1040);
static void Main(string[] args)
{
string url = args[0];
Console.WriteLine("Sito: " + url);
SPUserToken ut = null;
using (SPSite site = new SPSite(url))
{
ut = site.SystemAccount.UserToken;
}
using (SPSite site = new SPSite(url, ut))
{
Console.WriteLine("User:" + site.RootWeb.CurrentUser);
site.CatchAccessDeniedException = true;
SPWebApplication wApp = site.WebApplication;
foreach (SPSite s in wApp.Sites)
{
////s.CatchAccessDeniedException = false;
//stampo i dati della site collection
string msg = "Site;" + s.ServerRelativeUrl;
try
{
//trovo la data di ultima modifica del sito
DateTime dt = DateTime.MinValue;
if (s.LastContentModifiedDate > dt)
dt = s.LastContentModifiedDate;
if (s.LastSecurityModifiedDate > dt)
dt = s.LastSecurityModifiedDate;
msg += ";" + dt.ToString("yyyy-MM-dd HH:mm:ss");
msg += ";" + (s.Usage.Storage / 1048576.0).ToString("0.0", ci);
Console.WriteLine(msg);
ShowWeb(s);
}
catch (Exception ex)
{
Console.WriteLine("Site;" + ex.Message);
}
finally
{
s.Dispose();
}
}
}
}
private static void ShowWeb(SPSite site)
{
foreach (SPWeb w in site.AllWebs)
{
string msg = "Web;" + w.ServerRelativeUrl;
try
{
DateTime dt = w.LastItemModifiedDate;
msg += ";" + dt.ToString("yyyy-MM-dd HH:mm:ss");
long size = CalculateWebSpace(w);
msg += ";" + (size / 1048576.0).ToString("0.0", ci);
Console.WriteLine(msg);
}
catch (Exception ex)
{
Console.WriteLine("Web;" + ex.Message);
}
finally
{
w.Dispose();
}
}
}
//calcolo approssimativo
private static long CalculateWebSpace(SPWeb web)
{
const long DEFAULTSPACEFORLISTITEM = 255; //approssimazione
long size = 0;
foreach (SPList list in web.Lists)
{
foreach (SPListItem item in list.Items)
{
size += DEFAULTSPACEFORLISTITEM;
if (list.BaseType == SPBaseType.DocumentLibrary)
{
//document library
size += item.File.Length;
}
else if(list.EnableAssignToEmail==true)
{
//vedo se ho degli allegati
SPAttachmentCollection attColl = item.Attachments;
if (attColl != null && attColl.Count > 0)
{
foreach (string fileName in attColl)
{
string fileUrl = attColl.UrlPrefix + fileName;
SPFile attachFile = web.GetFile(fileUrl);
size += attachFile.Length;
}
}
}
}
}
return size;
}
}
}