PowerShell et SharePoint

A force de jouer avec les cmdlets Windows PowerShell de SharePoint, nous y avons pris goût 🙂

Avant de les utiliser, allez dans Tous les programmes > Microsoft SharePoint 2010 Products > SharePoint 2010 Management Shell (à exécuter en tant qu’administrateur).

Vous pourriez aussi lancer la commande PowerShell de Windows et tapez Add-PSSnapin Microsoft.SharePoint.PowerShell pour récupérer les cmdlets SharePoint.

Dans le modèle Objet de SharePoint, faites attention car SPSite est une collection de sites, tandis que SPWeb représente un site (ou un sous-site).

La première cmdlet à connaître est celle qui donne l’aide sur l’aide: Get-Help Get-Help. Les fichiers d’aide sont au format XML. Ils se trouvent dans le dossier C:/Program Files/Common Files/Microsoft Shared/Web Server Extensions/14/CONFIG/POWERSHELL/Help/fr-fr pour la version française.

D’autres exemples de cmdlet utiles:

  • Liste de toutes les cmdlets de SharePoint: Get-Command -PSSnapin Microsoft.SharePoint.PowerShell. Pour connaître leur nombre: @(Get-Command -PSSnapin Microsoft.SharePoint.PowerShell).count.
  • Liste de toutes les méthodes et propriétés d’un objet du Modèle Objet de SharePoint (par exemple Get-SPSite): Get-SPSite | Get-Member. La même commande pour Get-SPWeb: Get-SPSite | Get-SPWeb | Get-Member.
  • Affiche toute l’aide d’une commande (par exemple Get-SPSite): Get-Help Get-SPSite -Full. Pour avoir uniquement les exemples: Get-Help Get-SPSite -Examples
  • Liste des services SharePoint avec leurs états: Get-SPServiceInstance
  • Liste des bases de données: Get-SPDatabase
  • Liste de toutes les collections de sites et de leurs bases de données respectives: Get-SPSite -Limit All | select url, contentdatabase. Si vous omettez -Limit All, la requête ne renvoie que les 200 premiers objets.
  • Volume de stockage d’une collection de sites: Get-SPSite | select url, @{Expression={$_.Usage.Storage}}
  • Liste des sites basés sur un certain modèle de site (par exemple un site d’équipe): Get-SPSite -Limit All | Get-SPWeb -Filter {$_.Template -eq « STS#00 »}
  • Liste des modèles de sites de la ferme: Get-SPWebTemplate

Il existe bien d’autres cmdlets intéressantes.

Les cmdlets sont susceptibles d’utiliser une très grande quantité de mémoire. Aussi, afin d’éviter une fuite mémoire, vous pouvez utiliser les cmdlets Start-SPAssignment et Stop-SPAssignment. Ces cmdlets implémentent l’interface IDisposable afin de libérer la mémoire qui n’est plus utile. Voici deux exemples tirés de l’aide de la commande Get-SPSite qui utilisent la méthode d’affectation de collection :

Start-SPAssignment -Global
$s = Get-SPSite
$s.url
Stop-SPAssignment -Global

L’exemple ci-dessous utilise une méthode moins consommatrice de mémoire que la précédente grâce à des variables nommées :

$o = Start-SPAssignment
$s = $o | Get-SPSite
$s.url
Stop-SPAssignment $o

Lorsqu’on débute en PowerShell, et même après, le paramètre -WhatIf est précieux car il simule l’exécution de la cmdlet. Par exemple, la commande Get-SPSite | Remove-SPSite -WhatIf vous retournera WhatIf : Opération « Remove-SPSite » en cours sur la cible « http://mw41 », sans supprimer la collection de site. La difficulté est de savoir où positionner le paramètre -WhatIf quand les commandes sont imbriquées.

Vous trouverez ci-dessous, un programme en téléchargement libre qui:

  • Stocke les paramétres de configurations des fichiers journaux SharePoint dans un premier fichier texte,
  • Modifie la durée de conservation des journaux, ainsi que d’autres paramétres,
  • Stocke à nouveau les paramétres de configurations des fichiers journaux dans un nouveau fichier texte,
  • Compare avec une commande PowerShell les deux fichiers.

SPDiagnosticConfigParams_V1_0_0.zip

Mise à niveau des bases systèmes SharePoint

L’avertissement « Databases running in compatibility range, upgrade recommended » est apparu dans l’Administration centrale.
Databases running in compatibility range, upgrade recommended
Dans notre cas, seules les bases de données systèmes (par différences avec les bases de données de contenu) sont concernées. Ce message s’est affiché après l’application d’un CU (Cumulative Update). Il aurait pu aussi apparaître à la suite d’un Hotfix pour SharePoint.

Bases de données systèmes

L’avertissement concernant les bases de données systèmes, il a pu être supprimé grâce à la commande Psconfig.exe.

Dans une invite de commande, exécutée en tant qu’administrateur:
PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures
PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

Bases de données utilisateur

Lorsque l’avertissement concerne les bases de données de contenu des utilisateurs, la commande PowerShell à utiliser est Upgrade-SPContentDatabase.

Par exemple, si la base WSS_Content (base de données de contenu) est concernée, la commande à exécuter en tant qu’administrateur dans SharePoint 2010 Management Shell est:
$db = Get-SPDatabase | Where-Object {$_.Name -match « WSS_Content »}
Upgrade-SPContentDatabase -Identity $db

Mise à niveau de SharePoint 2007 vers SharePoint 2010

Depuis que Microsoft a lancé officiellement SharePoint Foundation 2010 et SharePoint Server 2010, vous vous interrogez sur la nécessité ou pas de migrer vers Sharepoint 2010. Dans cette rubrique, vous trouverez des critères de choix pour vous déterminer.

SharePoint 2010 n’est disponible qu’en version 64 bits, y compris pour SQL Server. Par conséquent, la première étape consiste à prévoir la migration ou la mise à jour de votre infrastructure SharePoint vers 64 bits.

Pour installer et utiliser SharePoint 2010, il est nécessaire de disposer d’une version 64 bits de Windows Server 2008 ou Windows Server 2008 R2. De même, il est impératif de disposer d’une version 64 bits de SQL Server 2008 ou de SQL Server 2005.

Afin de tirer au mieux parti des fonctionnalités de SharePoint 2010, il est conseillé que les postes clients fonctionnent sous Windows avec Internet Explorer 7 ou 8 en 32 bits.

Stratégies de migration vers SharePoint 2010

Que faire si, en ce moment :

  • vous n’avez rien mais vous hésitez entre SharePoint 2007 et SharePoint 2010 : quels sont les avantages et inconvénients des deux solutions ?
  • vous disposez déjà de SharePoint 2007, sur un système Windows 32 bits ou 64 bits, et vous vous interrogez sur la pertinence de migrer vers SharePoint 2010 ?
  • vous utilisez toujours la version SharePoint Portal Server 2003 (SPS 2003) ? Serez-vous obligé de faire une mise à niveau intermédiaire vers SharePoint 2007 pour passer à SharePoint 2010 ?

Autant de questions qui nécessitent des réponses différentiées. Voir aussi : Quels sont les Critères de choix entre SharePoint 2007 et SharePoint 2010 ?

Principe de la migration

Dans ce chapitre, nous présentons uniquement les grands principes de base d’une migration. Son objet est donner une idée de ce qu’il faudrait faire, sans chercher à être exhaustif.

  • Installer le Service Pack 2 de SharePoint 2007 avant la migration
  • Vérifier les pré-requis matériels: 64bits ; Windows 2008 ou Windows 2008 R2 (de préférence); SQL Server 2005 SP3 ou SQL Server 2008 SP1 (de préférence); séparation logs / datas; espace disque disponible au moins égal à 5 fois la taille de la mémoire physique
  • Vérifier les pré-requis logiciels: outre l’installation des composants pré-requis pour SharePoint 2010, il est préférable d’avoir accès à Internet pour télécharger les mises à jour
  • Préparer l’environnement avec la commande: stsadm.exe –o preupgradecheck
  • Identifier les personnalisations: pages maître (« master pages ») et gabarits (« layout »), css et thèmes, modèles de sites et listes, développements spécifiques, solutions, webparts, fonctionnalités (« features »), images (logos). Les modèles de sites et de listes SharePoint 2007 devront être recréés dans SharePoint 2010.
  • Supprimer les sites et espaces de travail obsolètes
  • Sauvegarder les bases de données de contenu SharePoint 2007 puis les restaurer sur SQL Server 2008
  • Tester les bases de données restaurées avec la commande PowerShell: test-spcontentdatabase –name <nom_base_de_donnees> –webapplication http://<nom_application_web>
  • Monter les bases de données restaurées avec la commande PowerShell: mount-spcontentdatabase –name <nom_base_de_donnees> –webapplication http://<nom_application_web>
  • Procéder à la Mise à niveau visuelle: nouvelle fonctionnalité de SharePoint 2010 qui permet de choisir l’apparence visuelle (ancienne apparence 2007, nouvelle apparence 2010)
  • Vérifier soigneusement les sites restaurés