Cambiare la pagina di Access Denied con Powershell

Tra i feed RSS letti negli ultimi giorni, uno ha colpito particolarmente la mia attenzione (tralasciando le notizie in arrivo dalla #SPC11). In questo post viene mostrato come cambiare la pagina di accesso negato di SharePoint 2010 programmaticamente, sostituendola con una personalizzata.

Essendo interessato all’argomento, ma NON essendo decisamente uno sviluppatore, mi sono chiesto come potere girare a mio vantaggio queste poche righe di codice. Da qui a pensare a Powershell il passo è breve.

Non ci vuole un genio per capire capire che l’oggetto a cui si riferisce il codice è la web application. Di conseguenza ho memorizzato in una variabile la mia web application di prova e in una seconda variabile il path della mia pagina di accesso negato personalizzata. Inutile dire che questa pagina deve esistere su file system.

$webapp = Get-SPWebApplication http://sp-2010
$adpage = “/_layouts/MyCustomLayout/AccessDenied.aspx”

Per capire se l’oggetto web application memorizzato nella variabile $webapp disponesse o meno di un metodo più o meno simile a quello visto nell’esempio, ho utilizzato la cmdlet get-member in pipeline con l’oggetto web application.

$webapp | Get-Member

Bingo! Abbiamo proprio lo stesso metodo, UpdateMappedPage. A questo punto ho commesso un errore che mi è stato d’aiuto per arrivare alla soluzione. Ho cioè pensato che per il passo successivo fosse necessario passare un oggetto e ho quindi scritto quanto segue:

$webapp.UpdateMappedPage(‘SPWebapplication.SPCustomPage.AccessDenied’,”/_layouts/MyCustomLayout/AccessDenied.aspx”)

L’errore che ne è derivato è stato significativo.

Access Denied

Risulta infatti chiaro che UpdateMappedPage accetta un set predefinito di valori testuali, tra i quali quello che ci interessa direttamente: AccessDenied. E’ interessante notare anche le altre opzioni, dovrebbero farvi venire in mente un po’ di prove interessanti da fare. Almeno per me è stato così🙂 Ho quindi corretto lo script in questo modo.

$webapp.UpdateMappedPage(“AccessDenied”,$adpage)

Per confermare l’impostazione è necessario eseguire l’update dell’oggetto web application ed infine il riavvio di IIS. Sinceramente non ho provato con il semplice recycle dell’application pool della web application. Se qualcuno dovesse provarlo me lo faccia sapere🙂

$webapp.Update()
iisreset

Il gioco è fatto. Si, ma non ho ancora finito. Dovendo ripristinare la configurazione originale basterebbe passare un valore null al posto della pagina (ripeterò solo le ultime tre righe).

$webapp.UpdateMappedPage(“AccessDenied”,$null)
$webapp.Update()
iisreset

E se volessimo leggere la configurazione corrente? Ancora una volta la cmdlet Get-Member è stata fondamentale. Dall’elenco prodotto in precedenza ho infatti notato la presenza del metodo GetMappedPage. Nonostante MSDN parli anche della possibilità di  utilizzare questo metodo passando come valore il tipo della pagina, cioè AccessDenied, io non so riuscito. Ho ottenuto il risultato sperato passando il path della pagina standard di accesso negato.

$webapp.GetMappedPage(“/_layouts/AccessDenied.aspx”)

Se poi volessimo…. No, scherzo, ho finito. E poi è appena resuscitato Optimus Prime, devo proprio andare🙂

– Riccardo

UpdateMappedPage: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.updatemappedpage.aspx
GetMappedPage: http://msdn.microsoft.com/en-us/library/ee551363.aspx
Il post originale: http://www.anmolrehan-sharepointconsultant.com/2011/08/how-to-use-custom-access-denied-page-in.html


2 commenti on “Cambiare la pagina di Access Denied con Powershell”

  1. Claudio Brotto scrive:

    Comunque sul fatto che tu non sia no sviluppatore inizio a nutrire qualche dubbio…🙂


Lascia un commento

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...