+
Il Cestino di SharePoint
Pubblicato il: 11/02/2012
Da: Riccardo Celesti
Lingua: Italiano
Livello: 300

La funzionalità del cestino è stata introdotta, in SharePoint, nella terza versione del prodotto, ovvero Windows SharePoint Services v3 e Microsoft Office SharePoint Server 2007. Da allora, escludendo quanto introdotto dal Service Pack 1 di SharePoint 2010 la logica non è cambiata.

Lo scopo di quest’articolo è duplice. Da un lato ricordare alcuni concetti che l’esperienza sul campo sembra dimostrare che non siano molto noti, dall’altro mostrare come utilizzare Windows PowerShell per superare alcune mancanze dell’interfaccia utente riguardanti la gestione del cestino.

Cominciamo con il ricordare che il cestino di SharePoint è strutturato su due livelli: cestino utente, o di primo livello, e cestino della site collection, o di secondo livello. In entrambi i casi, l’ambito di riferimento per la configurazione è quello della web application.

Per il cestino di primo livello è possibile impostare dopo quanti giorni gli elementi eliminati dall’utente, saranno cancellati definitivamente, o se questi elementi non dovranno mai essere eliminati automaticamente. L’impostazione predefinita è 30 giorni. Per il cestino di secondo livello è invece possibile configurare che percentuale rispetto alla quota assegnata alla site collection è a disposizione del cestino, 50% di default.

E’ utile ricordare che il numero di giorni definiti come retention per il contenuto del cestino vale tanto per il cestino di primo livello che per quello di secondo e che, il numero di giorni è inteso come totale e non si azzera nel passaggio da un livello all’altro. Questo vuol dire che se spostiamo nel cestino un documento oggi e tra 10 giorni lo eliminiamo anche da qui, facendolo passare al cestino di secondo livello, il nostro documento sarebbe recuperabile da un site collection administrator per 20 giorni, prima di essere cancellato definitivamente. Vuole ancora dire che se eliminiamo un documento, che si troverà quindi nel cestino di primo livello, e facciamo passare 31 giorni, il documento non sarà più recuperabile neanche da un site collection administrator, in quanto al 30 giorno è stato cancellato definitivamente.

Abbiamo detto che lo spazio dedicato al contenuto del cestino di secondo livello è una percentuale della quota del sito. Che cosa succede quindi se non abbiamo assegnato alcuna quota alle vostre site collection? La risposta è molto semplice, lo spazio assegnato al cestino di secondo livello non ha limite. Parlando di quote è inoltre utile ricordare che il contenuto del cestino di primo livello impatta sul raggiungimento di questo limite, mentre il contenuto del cestino di secondo livello no. Di conseguenza il rischio di crescita non controllata delle dimensioni del vostro database di contenuto è reale.

Diventa quindi importante includere nelle politiche di governo della propria farm anche la verifica periodica dei cestini e soprattutto del suo contenuto, perché, così come nel vostro ufficio, un cestino pieno comincia presto a dare fastidio J. Windows Powershell è uno degli strumenti che vi possono aiutare in questo tipo di attività. Vediamo subito come.

Da uno dei server SharePoint, o remotamente se avete attivato le funzionalità di PowerShell Remoting, apriamo la SharePoint 2010 Management Shell e memorizziamo l’oggetto “site collection” all’interno di una variabile.

$site = Get-SPSite http://intranet

Per visualizzare l’elenco di metodi e proprietà dell’oggetto appena salvato utilizzeremo la cmdlet get-member in pipeline con la nostra variabile, come segue. Per comodità filtreremo i risultati per ottenere solo quelli il cui nome contiene la stringa “recycle”.

$site | get-member | ?{$_.Name –match “recycle”}

Il risultato di questa interrogazione dovrebbe corrispondere a quanto riportato nell’immagine seguente.

Figura 1

GetRecycleBinItems restituisce l’elenco degli oggetti contenuti nel cestino in base alla query che indicata come parametro d’ingresso. Tramite l’oggetto SPRecycleBinQuery potremo definire un limite al numero di elementi restituiti, l’ordinamento (ascendente, discendente e la proprietà) e se visualizzare gli elementi del primo o del secondo livello.

Un esempio di utilizzo di questo metodo è il seguente:

$recyclebinQuery = new-object Microsoft.SharePoint.SPRecycleBinQuery

$recyclebinQuery.RowLimit = 1000

$recyclebinQuery.OrderBy = "DeletedBy"

$recyclebinQuery.IsAscending = $false

$recyclebinQuery.ItemState = "SecondStageRecycleBin"

$site.GetRecycleBinItems($recyclebinQuery)

 

Il risultato di quest’operazione è un sottoinsieme degli elementi contenuti nel cestino (numero corrispondente al valore impostato per la proprietà RowLimit). Per ogni elemento sono specificate un discreto numero di proprietà, come si può vedere nell’immagine seguente.

Figura 2 

Salvando l’output del comando precedente in una variabile saremo quindi in grado di effettuare delle ricerche al suo interno. Ad esempio se volessimo cercare tutti i file pdf potremmo usare un comando come il seguente. La stessa logica vale ovviamente anche per tutte le altre proprietà.

 

$items = $site.GetRecycleBinItems($recyclebinQuery)

$items | ?{$_.LeafName -like "*.pdf"}

 

Un’altra informazione che possiamo ottenere facilmente è il numero di elementi selezionati. Basterà utilizzare la proprietà Count, come segue.

 

$items.Count

 

Tuttavia per ottenere informazioni statistiche sull’utilizzo del cestino potremmo usare il secondo metodo a nostra disposizione, cioè GetRecycleBinStatistics. L’utilizzo di questo metodo è molto più elementare, dovremo specificare semplicemente i nomi delle variabili corrispondenti ai parametri di output per ottenere il numero totale (primo e secondo livello) e il totale dello spazio disco occupato. Vediamo come nell’esempio di seguito.

$itemcount = 0

$itemsize = 0

$site.GetRecycleBinStatistics([ref]$itemcount,[ref]$itemsize)

 

Una volte eseguite queste tre righe, basterà richiamare le variabili itemcount e itemsize per stampare a video i relativi valori. Itemsize è espresso in byte, è tuttavia possibile ottenere un valore più facilmente leggibile eseguendo il comando seguente (per approfondimenti).

 

"{0:N2}" -f (($itemsize / 1024) / 1024)

 

L’unico limite di questo metodo è di avere, come ambito d’esercizio, il primo livello del cestino, non considerando il contenuto già passato al secondo livello.

L’ultima delle tre modalità di accesso al cestino è tramite la proprietà RecycleBin dell’oggetto site collection. Grazie a questa proprietà avremo la possibilità di accedere agli elementi del cestino, di primo o secondo livello, per ottenerne, ad esempio, l’elenco o il conteggio degli item cestinati.

$site.RecycleBin

$site.RecycleBin.Count

 

Tuttavia abbiamo già visto che utilizzando il metodo GetRecycleBinItems abbiamo molte più possibilità di gestione di questo tipo di elenchi, dove sta quindi il vantaggio di utilizzare questa proprietà? Semplicemente che, tramite essa, abbiamo a disposizione molti metodi tra cui tre particolarmente comodi e soprattutto semplici da utilizzare: MoveAllToSecondStage, DeleteAll, RestoreAll. I nomi si spiegano da soli, ma vediamoli uno ad uno:

·        MoveAllToSecondStage ci servirà per passare tutto il contenuto del cestino di primo livello al secondo.

·        DeleteAll cancellerà tutto il contenuto eliminato dagli utenti, svuotando il cestino irrimediabilmente.

·        RestoreAll ripristinerà tutto il contenuto dal cestino riportandolo nella sua posizione di origine.

Per utilizzare i tre metodi appena descritti basterà utilizzare il codice seguente:

$site.RecycleBin.MoveAllToSecondStage()

$site.RecycleBin.DeleteAll()

$site.RecycleBin.RestoreAll()

 

Per ciascuno di questi metodi esistono i corrispettivi “al singolare”, cioè Delete, MoveToSecondStage e Restore. La grande differenza è che questi sono riferiti a un item e quindi devono essere utilizzati specificando il GUID dell’elemento, come da esempio seguente.

$site.RecycleBin.Delete('6ec8e210-20d6-48ec-ba37-356dba196074')

Sicuramente il contenuto di questo articolo non copre tutto quanto si poteva scrivere sul cestino di SharePoint, ho riportato volutamente i link alle pagine MSDN, senza entrare nei dettagli, per poter approfondire il funzionamento di metodi e proprietà di persona.

Buon proseguimento.

Tags


Destinatari


Prodotti

Microsoft SharePoint Server 2010
SharePoint Foundation 2010


Bookmark and Share