mardi 20 décembre 2011

Renommer une Collection de Site SharePoint 2010

Encore un nouveau post dans les PowerShell Series SharePoint 2010.
Aujourd’hui, je présente une manière simple de renommer une collection de site dans la même Application Web et la même base de contenu via un script PowerShell.



Start-SPAssignment -Global

# Section à modifier avec ses propres informations
$WebAppULR = http://portal.com
$SPsiteOldURL = http://portal.com/site1
$SPsiteNewURL = http://portal.com/site12
$Path = C:\temp\site1.bck # chemin de sauvegarde
$JobName = "job-site-deletion"

# Sauvegarde de l'ancienne collection de sites
Backup-SPsite $SPsiteOldURL -path $Path

# Suppression de l'ancienne collection de sites
Remove-SPSite $SPsiteOldURL -Confirm:$false

$WebApp = Get-SPWebApplication $WebAppULR

# Démarrage du Timer Job "Gradual Site Delete"
$job = Get-SPTimerJob | where {$_.Name -eq $JobName -and $_.Parent -eq $WebApp}
Start-SPTimerJob $job

# Restauration de la nouvelle collection de sites
Restore-SPsite $SPsiteNewURL -path $Path -Confirm:$false

Stop-SPAssignment -Global


eNjoy !

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