……Marco Valli's Blog……

Internet, Tecnologia e SharePoint!!!

PowerShell, il miglior amico di SharePoint! [Parte 1]


***DISCLAIMER*** quanto indicato in questo post può provocare GRAVI danni all’ambiente SharePoint se non utilizzato in modo corretto, quindi fate sempre attenzione ai comandi digitati, l’autore non è in alcun modo responsabile di un utilizzo improprio delle informazioni qui riportate.

Chi ha utilizzato SharePoint 2007 ed è passato successivamente a SharePoint 2010 avrà sicuramente notato un notevole incremento di funzionalità disponibili attraverso la comoda interfaccia web della Centra Administration e della pagina delle impostazioni di Site Collection e Siti, nonché le numerose possibilità offerte da SharePoint Designer; esiste tuttavia una quantità sterminata di impostazioni per un qualsiasi elemento di SharePoint, dall’intera Farm, alla web application, dall Site collection al singolo campo di una lista.. Tutte queste hanno uno strumento comune dalla potenza spesso sottovalutata. POWERSHELL.

image

La PowerShell infatti è ben più di una riga di comando in quanto ha potenzialità quasi illimitate.. In questi post inserirò tutti i cmdlet più utili e anche quelli più strani che mi sia mai capitato di utilizzare…

image

Non ho intenzione di scrivere guide chilometriche di parametri ma di indicare i comandi più utilizzati, per le informazioni più dettagliate, Technet è sicuramente il posto migliore dove cercare..

Gestione dei log di SharePoint

Questi comandi consentono con pochissimi passaggi di abilitare il verbose logging su tutti gli elementi, di spezzare il file di log giusto il tempo necessario e il reset del livello di logging di default, il tutto con tre semplici passaggi:

Set-SPLoglevel -TraceSeverity VerboseEx -EventSeverity Verbose

New-SPLogfile

Clear-SPLogLevel

Modifica delle proprietà dei campi di una lista

Questi comandi permettono la modifica di proprietà dei campi di una lista di sharepoint come ad esempio la visibilità del campo, in questo caso, la funzionalità nasconde il campo in tutte le form e anche nella pagina delle impostazioni della lista ma rimane accessibile dalle viste, molto utile in caso di utilizzo di campi di appoggio che non bisogna far vedere…

$web = Get-SPWeb -identity http://nomeportale/sites/nomesito
$list = $web.Lists[“TestList”]
$column = $list.Fields[“TestColumn”]
$column.Hidden = $true
$column.Update()

In alcuni casi può anche essere utile visualizzare le proprietà di specifici campi, in questo caso in modo del tutto simile a quanto visto prima, possiamo mostrare a video le informazioni recuperate:

$web = Get-SPWeb -identity http://nomeportale/sites/nomesito
$list = $web.Lists[“TestList”]
$column = $list.Fields[“TestColumn”]
Write-Host $column.SchemaXml

Che da come risultato

<Field Type=”Text” DisplayName=”TestColumn” Required=”FALSE” EnforceUniqueValues=”FALSE” Indexed=”FALSE” MaxLength=”255″ ID=”{ae5717a1-db3e-4c72-b39d-00b07cfd4a92}” SourceID=”{e00203e6-4581-418d-8870-988ec501529f}” StaticName=”TestColumn” Name=”TestColumn” ColName=”nvarchar3″ RowOrdinal=”0″ Hidden=”TRUE” CanToggleHidden=”TRUE” Version=”4″/>

Sfruttando queste informazioni è possibile intervenire e modificare il funzionamento di un campo in maniera “non convenzionale”, ad esempio in un campo lookup il risultato è:

<Field Type=”Lookup” DisplayName=”TestLookup” Required=”FALSE” EnforceUniqueValues=”FALSE” List=”{3eef9343-4db7-45a6-940b-746d39bb6ff4}” ShowField=”Title” UnlimitedLengthInDocumentLibrary=”FALSE” RelationshipDeleteBehavior=”None” ID=”{9a452bc5-c9c8-44fd-9454-15d270e84be9}” SourceID=”{e00203e6-4581-418d-8870-988ec501529f}” StaticName=”TestLookup” Name=”TestLookup” ColName=”int1″ RowOrdinal=”0″/>

Come si può notare, viene riportato il GUID della lista di origine del lookup, sostituendo questo valore nello schemaXml con il GUID di una lista differente, è possibile in maniera rapida cambiare la lista di appoggio di un lookup (cosa impossibile da effettuare da interfaccia) ma soprattutto, aggiungendo anche il parametro WebId è possibile indicare un sito differente (che deve essere SEMPRE nella stessa Site Collection, non importa se in un sito differente), quindi con un comando di questo tipo:

$web = Get-SPWeb -identity http://nomeportale/sites/nomesito
$list = $web.Lists[“TestList”]
$column = $list.Fields[“TestLookup”]
$column.SchemaXml = “<Field Type=’Lookup’ DisplayName=’TestLookup’ Required=’FALSE’ EnforceUniqueValues=’FALSE’ List='{7365C084-E2CF-4B06-B768-60650A99B179}’ WebId='{df59847a-e32d-4f80-8ee0-1db3e6577aac}’ ShowField=’Title’ UnlimitedLengthInDocumentLibrary=’FALSE’ RelationshipDeleteBehavior=’None’ ID='{9a452bc5-c9c8-44fd-9454-15d270e84be9}’ SourceID='{e00203e6-4581-418d-8870-988ec501529f}’ StaticName=’TestLookup’ Name=’TestLookup’ ColName=’int1′ RowOrdinal=’0’/>”
$column.Update()

E’ possibile modificare la colonna di lookup in modo che vada a recuperare le informazioni da una lista presente in un sito differente in modo molto semplice e pulito.. Come per i normali lookup nella lista l’informazione verrà vista come un normale link cliccabile che da accesso alla form dell’elemento nell’altro sito..

Questi sono solo alcuni degli esempi possibili in quanto l’elenco delle proprietà dei campi è decisamente consistente, l’elenco completo è disponibile naturalmente su technet: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.client.field_properties.aspx

Prossimamente altri interessanti comandi per entrare nel profondo di SharePoint..

Enjoy! 🙂

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: