Luca Annuiti

il mio Blog personale su Virtualizzazione, SharePoint, Programmazione e ...

Come risolvere un problema di accesso limitato agli amministratori della raccolta siti in SharePoint 2010

Mi è capitato, dopo aver spostato alcuni siti di SharePoint 2010 su una nuova di farm di trovarmi di fronte all'impossibilità di effettuare una qualunque modifica, nonostante sia stato effettuato l'accesso con l'account di amministratore della raccolta siti.

La situazione che si presentava era questa :

  • il menu Azioni sito mostrava opzioni limitate
  • Entrando nella schermata Autorizazzioni sito non era possibile effettuale nessuna operazione se non la verifica delle autorizzazioni :
  • Effettuando la Verifica autorizzazioni sull'account utilizzato per l'accesso, viene restituta una lunga lista di opzioni a cui è negato l'accesso

Il motivo per cui si è verificato tale "problema" è che la raccolta siti, dopo il restore sulla nuova farm, è stata impostata in modalità Sola lettura; e quindi bastato ripristinare lo stato blocco in modo da permettere nuovamente le modifiche.

Ecco come fare : 

Dall'Amministrazione centrale, selezionare la voce Gestione applicazioni e poi Configura quote e blocchi :

Nella schermata successiva,selezionare nella tendina Raccolta siti la voce corretta e impostare lo Stato di blocco per il sito sul valore Non bloccato

Esportare tutte le solution da una farm SharePoint 2010 tramite Powershell

Ecco un semplice script powershell che ci permette di esportare tutte le solution presenti in una farm di SharePoint :

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue 
# imposto la cartella di destinazione
$ExportFolder = "c:\Projects\exported-solution"


if((Test-Path $ExportFolder) -eq $False) #Controllo se la cartella di destinazione esiste


#Se la cartella non esiste la creo
New-Item $ExportFolder -type Directory | out-null
Write-Host "La Cartella di destinazione è stata creata" -fore green 

else
{
Write-Host "La Cartella di destinazione è già presente" -fore green


#Esporto tutte le solution della farm nella cartella di destinazione
(Get-SPFarm).Solutions | where{$_.Deployed -ne $null} | ForEach-Object{$solution = $ExportFolder + "\" + $_.Name; $_.SolutionFile.SaveAs($solution); Write-Host "Exporting $solution"}  

Write-Host "Tutte le solution sono state esportate in $ExportFolder, premere un tasto per continuare" -fore green 

Aprire i file PDF contenuti in SharePoint 2010 direttamente nel browser

In SharePoint 2010 un file PDF non può essere aperto all’interno del browser e viene richiesto, al momento del click, di salvarlo, obbligandoci quindi ad un ulteriore passaggio per visualizzarne il contenuto; questo in quanto i file con PDF non sono considerati "sicuri" da SharePoint.

Questo comportamento è da attribuire ad un nuovo Security Header che è gestito dal browser (in particolare da IE8 in poi) e che permette di aprire nel browser solo alcuni MIME Types riconosciuti come "sicuri".

Sarebbe possibile “disabilitare” questo controllo a livello di Web Application, permettendo così a tutti i tipi di file di essere aperti via browser, ma a livello di sicurezza è meglio aggiungere il tipo "PDF" nell'elenco dei MIME Types "autorizzati" utilizzando questi comandi PowerShell :

$webapp = Get-SPWebApplication http://MyWebappURL
$webapp.AllowedInlineDownloadedMimeTypes.Add(“application/pdf”)
$webapp.Update()
iisreset

Ovviamente lo stesso procedimento può essere utilizzato anche per altri tipi di file.

Nel caso sia necessario rimuovere un tipo di file dall'elenco questo è il comando da utilizzare : 

$webApp.AllowedInlineDownloadedMimeTypes.Remove("application/pdf")

Aggiungere e modificare Colonne del sito in SharePoint utilizzando PowerShell

Questi utili comandi PowerShell ci permettono di aggiungere e modificare Colonne del sito in SharePoint.

Aggiungere un nuovo campo speficando le proprietà in formato XML ( definizione dello schema XML disponibile all'indirizzo http://msdn.microsoft.com/en-us/library/ms437580.aspx ) :

$site = Get-SPSite -Identity "http://mywebapplication/"
$web = $site.RootWeb 

$fieldXML = '<Field Type="Text"
Name="CustomSiteColumn"
Description="This is a my Site Column."
DisplayName="my Site Column"
Group="my Site Column"
Hidden="FALSE"
Required="FALSE"
ShowInDisplayForm="TRUE"
ShowInEditForm="TRUE"
ShowInListSettings="TRUE"
ShowInNewForm="TRUE"></Field>' 

$web.Fields.AddFieldAsXml($fieldXML)
$web.Dispose()
$site.Dispose()

Aggiungere un nuovo campo specificando solo nome e tipo :

$site = Get-SPSite -Identity "http://mywebapplication/"
$web = $site.RootWeb 
$web.Fields.Add("CustomSiteColumn",[Microsoft.SharePoint.SPFieldType]::Text,$true)
$web.Dispose()
$site.Dispose()

Modificare le proprietà di un campo ( fare sempre riferimento allo schema XML disponibile all'indirizzo http://msdn.microsoft.com/en-us/library/ms437580.aspx in quanto alcune delle proprietà non sono modificabili ) :

$site = Get-SPSite -Identity "http://mywebapplication/"
$web = $site.RootWeb 
$field=$web.Fields["my Site Column"]
$field.Type= "Choice"
$field.Update($true)
$web.Dispose()
$site.Dispose()

Riporto inoltre questo script che ci permette di esportare in formato XML tutte le Colonne del nostro sito :

$sourceWeb = Get-SPWeb http://mywebapplication
$xmlFilePath = "C:\SharePoint\my-SiteColumns.xml"

#Create Export Files
New-Item $xmlFilePath -type file -force

#Export Site Columns to XML file
Add-Content $xmlFilePath ""
Add-Content $xmlFilePath "`n"
$sourceWeb.Fields | ForEach-Object {
   if ($_.Group -eq "Custom Columns") {
       Add-Content $xmlFilePath $_.SchemaXml
   }
}
Add-Content $xmlFilePath ""

$sourceWeb.Dispose()

Gestire solution con PowerShell su SharePoint 2010

Questo è l'elenco dei comandi che ci permettono di gestire le soluzioni (installazione,deploy, rimozione, ecc) nella nostra farm di SharePoint tramite PowerShell ( per maggiori informazioni sui parametri usare il comando "Get-Help <nomecomando>" ).

Aggiungere la soluzione alla farm :
Add-SPSolution c:\SharePointSolution\SharePointSolution.wsp

Deploy della soluzione :
Install-SPSolution –Identity SharePointSolution.wsp –WebApplication http://mySp2010 -GACDeployment

Aggiornare la soluzione :
Update-SPSolution –Identity SharePointSolution.wsp –LiteralPath c:\code\SharePointSolution\bin\debug\SharePointSolution.wsp –GACDeployment

Ritiro della soluzione da una web application :
Uninstall-SPSolution –Identity SharePointSolution.wsp –WebApplication http://mySp2010

Rimozione della soluzione dalla farm :
Remove-SPSolution –Identity SharePointSolution.wsp

IMPORTANTE : Per effettuare il ritiro della soluzione è necessario che il servizio SharePoint 2010 Administration sia in esecuzione.