Beren.it

All that you can leave behind

Trovare una Lista in SharePoint per GUID con PowerShell

Una delle situazioni più classiche lavorando con con SharePoint è quella di volere recuperare una Lista e, più in generale un oggetto, conoscendone il GUID. L'esempio classico è quando si ottiene con un Access Denied il GUID dell'oggetto "proibito" con il problem di doverlo identificare. In rete si trova un ottimo post che risolve il problema mostrando la lista di tutte le library di un web con il corrispettivo GUID.

 

2007 version:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$site = New-Object Microsoft.SharePoint.SPSite("http://yourserver/sites/yoursite")
$web = $site.OpenWeb("yoursubsite")
write-host "Site: " + $site.id
write-host "Web: " + $web.id
$web.lists | Format-Table title,id -AutoSize
$web.Dispose()
$site.Dispose()

 

2010 version:

$site = Get-SPSite http://yourserver/sites/yoursite
$web = $site.OpenWeb("yoursubsite")
write-host "Site: " + $site.id
write-host "Web: " + $web.id
$web.lists | Format-Table title,id -AutoSize
$web.Dispose()
$site.Dispose()

 

L'unica modifica che dovete fare è sostituire l'url della vostra Site Collection. Qui sotto trovate l'esempio di output dello script.

CMS su SP2010 (parte 3) - Creazione Web Application

In questo post prenderemo confidenza con l'ambiente di Sharepoint 2010 e ad alcuni strumenti assai utili quando si deve lavorare in questo contesto. Non perderndo di mezzo quello che è il nostro obbiettivo, cioè un semplice CMS, cominciamo con l'aprire la Central Administration di SP2010. Per chi fosse un totale neofita di SP, la Central Administration è una Web Application a tutti gli effetti che consente di amministrare praticamente tutte le funzionalità e i settaggi di SP: una sorta di pannello di controllo di Windows, trasferito nel contesto di Sharepoint.

Per accedere ad essa è sufficiente premere start e ricercare sotto la Cartella dei programmi Sharepoint 2010 Products il link a Sharepoint 2010 Central Admin dopo pochi secondi una finestra del browser si aprirà e dopo aver inserito le credenziali di un utente amministratore (tipicamente quello della macchina) mostrerà proprio la web application di destinazione. Attenzione: sebbene Sharepoint 2010 quanto a browser compatibility è molto migliorato rispetto al predecessore, consiglio per di utilizzare IE 32bit (anche se la macchina che utilizzate è 64bit) per ragioni di compatibilità con alcuni controlli ActiveX che in alcuni casi vi porterebbero a perdere del tempo in fase di configurazione se utilizzati su altri browser.

Come già precisato la Central Administration è un pò il pannello di controllo di Sharepoint. Quindi l'interrogativo che resta ancora aperto è: dove e come creare la Web Application custom su cui far girare il CMS? Il nostro obbiettivo è infatti creare una Sharepoint Web Application, vale a dire un'applicazione Web che "viva" sotto il contesto di Sharepoint, cioè sia configurabile tramite la Central Admin e fruisca di tutte le funzionalità out-of-the-box di SP.
Per farlo si potrebbe semplicemente, acceddere al menu Application Management della Central Admin, ma noi invece utilizzeremo invece un tool molto potente che consente per altro un'astrazione e una robustezza considerevole soprattutto per quella che è considerata la fase di deploy. Il tool di cui sto parlando è PowerShell. L'unica accortezza che si chiede di prestare per utilizzarlo nel contesto di SP è di non aprire il classico link a PS che ad esempio si può trovare nella barra del desktop, ma quello più specifico al di sotto del menu degli Sharepoint Products. In effetti, questo PS si differisce da quell'altro per l'accesso amministrativo alle risorse di SP, che altrimenti potrebbero darvi numerosi problemi Access Denied e anche quello di fornire già tutte le funzionalità di SP senza doverle esplicitamente caricarle sostituendo di fatto l'obosleto STSADM.

Nella schermata che si aprirà, una shell a tutti gli effetti, andiamo dunque ad inserire una serie di parametri che ci torneranno utili nella creazione della web application. Partiamo innanzitutto dal comando che effettua l'operazione: New-SPWebApplication. Qui sotto sono invece riportati i parametri fondamentali che useremo a breve:

  • Name è il nome della web application
  • ApplicationPool è il nome dell'application pool che verrà creato in IIS e su cui girerà l'applicazione
  • ApplicationPoolAccount è il "managed account" con il quale girerà l'app pool
  • URL è l'url pubblico dell'applicazione
  • Port è la porta su cui girerà l'app
  • Database Name è il catalog di SQL Server che verrà creato per gestire l'applicazione da Sharepoint
  • Database Server è il nome dell'istanza di SQL Server su cui verrà generato il Catalog di cui sopra.

In realtà i parametri da utilizzare possono essere molti di più, ad esempio in questo caso utilizzero l'authentication di Windows, che è quella di default ma se volessimo utilizzare quella Claim Base dovremmo modificare alcune cose. In questa pagina di MSDN potete trovare tutto quello che vi serve anche sotto gli altri scenari possibili.
A questo punto lanciamo il batch dopo averlo customizzato :

$name = "Beren CMS"
$AppPool = "BerenCMSAppPool"
$url = "www.berencms.com"
$port = 9999
$AppPoolAccount = "XXX\Administrator"
$sp_webapp_databasename = "WSS_BerenCMS"
$sp_webapp_databaseserver = "XXX\Sharepoint"
New-SPWebApplication -Name $name -ApplicationPool $AppPool -port $port -url $url -ApplicationPoolAccount (Get-SPManagedAccount $AppPoolAccount) -DatabaseName $sp_webapp_databasename -DatabaseServer $sp_webapp_databaseserver

Purtroppo però, a meno che non abbiate già configurato un "managed Account" l'esito del batch sarà negativo:

In effetti l'errore: "No matching accounts were found" sembra indicare un problema con l'utente specificato per l'account dell'Application Pool. Dopo una breve googolata trovo che in effetti l'utente usato nell'application pool deve essere un "Managed Account". . Per creare un managed account occorre aprire la Central Admin, cliccare sulla sezione di Security e quindi Service Account.

Scorrendo la pagina clicchiamo sul link "Register new managed account" e quindi nella pagina che si aprirà introduciamo l'account che sopra abbiamo designato ad essere usato nell'Application Pool, quindi premiamo OK e quando torniamo alla pagina deglia account nella tendina troveremo anche l'account appena creato. Per maggior sicurezza lanciamo batch per verifica la bontà dell'operazione effettuata.

Ci siamo! Ora l'utente è risolto correttamente dal sistema e quindi possiamo rilanciare il primo batch di creazione della Web Application:

Nell'immagine qui sopra si può notare come al termine della creazione unbreve riepilogo mostrerà i dati della Web Application appena creata. Bene, ed ora? Abbiamo creato la Web Application ma se proviamo a raggiungerla attraverso l'url ci beccheremo un bel errore inquanto la webapplication in se per se è solo un involucro vuoto all'interno del quale va generata la SiteCollection ed in particolare il web Site che sta come root e dal quale discenderanno poi tutti i web site che possono servire. Nel prossimo post ci occuperemo della creazione della sitecollection.