mercredi 30 novembre 2011

PowerShell Series : Web Application en Lecture Seule


Vous administrez une ferme SharePoint 2010 et un bug bloquant apparaît sur une fonctionnalité custom. Le client vous demande de mettre en urgence la web application en question en lecture seule :

Il vous est toujours possible de vous connecter à la Centrale Admin et de sélectionner l’option pour chaque Collection de Site de la Web Application. Cependant, quand il y a des dizaines, voir des centaines de collections de sites dans celle-ci, il ne vous reste qu’un seul choix : scripter la modification.

Le script suivant permet de balayer toutes les collections de site et les configurer en lecture seule :


$WebAppUrl = "<WebApp_URL>”
$Lockstate = "ReadOnly"
Start-SPAssignment -Global
            $WebApp = Get-SPWebApplication $WebAppUrl
            $Sites = $WebApp.Sites
            ForEach ($Site in $Sites)
            {
            $Siteurl = $Site.url
            Set-SPSiteAdministration -LockState $LockState -Identity $siteurl;
            $Siteurl
            }
Stop-SPAssignment -Global


Pour remettre la Web Application en lecture / écriture, lancer le même script en remplaçant $Lockstate = "ReadOnly" par $Lockstate = "Unlock"

eNjoy !

mardi 29 novembre 2011

PowerShell Series : Farm Warmup


Dans ce nouveau post des PowerShell Series, je vais présenter un script simple permettant d’effectuer un warm up d’une ferme SharePoint 2010

L’idée est d’appeler tous les sites et sous sites de la ferme afin de charger les DLL et les pages en vue d’accélérer les ouvertures de pages pour premiers utilisateurs.

If ((Get-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null)
            {
          Add-PsSnapin Microsoft.SharePoint.PowerShell
            }

Function Get-WebPage([string]$url)
{
    $wc = new-object net.webclient;
    $wc.credentials = [System.Net.CredentialCache]::DefaultCredentials;
    $pageContents = $wc.DownloadString($url);
    $wc.Dispose();
    Return $pageContents;
}

            Write-Host "Warmup Starting"

$WebApps = Get-SPWebApplication      
            ForEach ($Webapp in $WebApps)
            {
$Sites = $WebApp.sites
    ForEach ($Site in $Sites)
            {
        $SiteUrl = $Site.Url;

Get-SPSite -Identity $siteurl | Get-SPWeb | ForEach-Object { $WebUrl = $_.url ; Write-Host $WebUrl ; $html=get-webpage -url $WebUrl}
            }
    }

            Write-Host "Warmup End"

Afin de planifier l'exécution (avant les premières connexions des utilisateurs), Il suffit de créer un fichier.bat avec la ligne suivante :

Powershell.exe <CheminduFichier>\NomduFichier.ps1

eNjoy !

lundi 21 novembre 2011

PowerShell Series : Désactiver l’édition des sites SP2010 dans SharePoint Designer


Ceci est mon premier post autours de scripts PowerShell permettant d’automatiser des tâches d’administration SharePoint 2010.

Désactiver l’édition des sites SharePoint 2010 dans SharePoint Designer  :

$WebApps = Get-SPWebApplication
ForEach ($WebApp in $WebApps)
{
$WebApp.AllowDesigner = $False
$WebApp.Update()
}

Ce script scrollera toutes les Web Applications de la ferme et modifiera la property AllowDesigner de chaque WebApp avec la valeur False.

Bien entendu, il est possible de désactiver l'édition uniquement pour une Web Application en particulier :

$WebApp = Get-SPWebApplication <WebAppURL>
$WebApp.AllowDesigner = $False
$WebApp.Update()

eNjoy


mercredi 16 novembre 2011

Erreur Restore-SPSite



Symptôme :

Vous voulez restaurer une collection de site en utilisant la cmdlet Restore-SPSite ou bien via la Centrale Admin. Vous recevez l’erreur suivante :

Restore-SPSite : The operation that you are attempting to perform cannot be completed successfully.  No content databases in the web application were available to store your site collection.  The existing content databases may have reached the maximum number of site collections, or be set to read-only, or be offline, or may already contain a copy of this site collection.  Create another content database for the Web application and then try the operation again.


Explication :

Cela arrive quand vous restaurez pour la énième fois dans la même Base de Contenue :

Solution :

#1 Créer une nouvelle Base de Contenue pour y héberger la collection de site (solution peu pratique dans un environnement de production que l’on souhaite maîtriser)

#2 Aller dans les "Timer job definition", et exécuter le job "Gradual Site Delete" de la Web Application en question, puis relancer votre commande Restore-SPSite