3. A propos
Depuis maintenant quelques années j'accompagne les entreprises dans la
mise en place de solutions collaboratives SharePoint.
Mes missions sont très variées et peuvent couvrir les domaines suivants :
Gouvernance
Architecture
Conception
Développement
Coaching
Formation
J’ai (enfin!) décidé de faire partager mes expériences sur des cas concrets
issus de mes projets.
Cet article est donc basé sur ces retours d’expériences, il est destiné aux
administrateurs ayant déjà quelques connaissances sur PowerShell.
3
Ran MELLUL, Senior Architect & Practice Manager
4. PowerShell
PowerShell est incontournable pour certaines tâches d’administration
Windows et SharePoint.
Introduit en 2006, la version 4.0 cible Windows Serveur 2012 R2 et
Windows 8.1. PowerShell 4.0 utilise le Framework .Net 4.5.
Plusieurs modes d’exécution existent
Console Windows PowerShell
SharePoint Management Shell
ISE (éditeur de scripts)
Cette présentation utilise un environnement Windows Serveur 2012 R2
avec SharePoint 2013 SP1 sur une installation On-Premise. Le compte
administrateur local et de la ferme est utilisé.
Le but de cet article est de partager quelques commandes et techniques
que j’utilise assez fréquemment.
4
Késako ?
5. PowerShell
Si l’UAC est activé sur votre machine, pensez à démarrer la console en
administrateur
Le snap-in Microsoft.SharePoint.PowerShell est chargé et vous pouvez
commencer à exécuter vos commandes
5
SharePoint 2013 Management Shell
7. Commandes
Au total, 810 commandes sont disponibles
7
Get-Command –PSSnapin Microsoft.SharePoint.PowerShell
8. Commandes
Cette cmdlet permet de consigner toutes les saisies dans un fichier texte
8
Start-Transcript
9. Commandes
Si vous n’êtes pas familiarisé avec les ft, fl, %, …, cette cmdlet est utile
9
Get-Alias
10. Commandes
Cette cmdlet permet d’afficher les résultats dans une interface
graphique avec des options de filtres, ajouts de critères, etc.
Pour faire un pipe (|) sur un clavier Suisse : Alt Gr + 710
Out-GridView
12. Commandes
Cette cmdlet permet de découvrir les membres (méthodes, propriétés)
des objets
12
Get-Member (alias:gm)
13. Commandes
Cette cmdlet permet de sélectionner les propriétés à afficher
Depuis PowerShell 3.0, cette notation est possible
Get-SPWeb http://c4968397007 | select url,webtemplate
13
Select-Object (alias:select)
14. Commandes
Cette cmdlet permet de trier les propriétés
Cette notation est possible
Get-SPServiceApplication | sort DisplayName
14
Sort-Object (alias:sort)
15. Commandes
Cette cmdlet permet de filtrer les propriétés
Cette notation est possible
Get-SPServiceApplication | where DisplayName -like Sec*
15
Where-Object (alias:where)
16. Commandes
Cette cmdlet vous aidera à faire des aggrégations (compteur, somme,
moyenne, max et min)
Vous pouvez utiliser cette notation
Get-SPSite -Limit All | measure
16
Measure-Object (alias:measure)
17. Commandes
Tous les objets disposent de la propriété .count pour compter les
éléments
17
(…).count
18. Commandes
Cette cmdlet permet d’afficher toutes les informations en supprimant les
fameux …
18
Format-Table –AutoSize -Wrap (alias:ft)
20. Commandes
Vous pouvez définir des variables pour faciliter l’écriture des
commandes : $MaVariable=XXX
PowerShell utilise des variables système
20
Variables
21. Scripts
L’ISE est l’outil pour la création des scripts, il dispose d’une interface
graphique et vous pourrez profiter de l’aide à la saisie, le débogage, etc.
21
Windows PowerShell ISE (éditeur de scripts)
22. Scripts
Par défaut, SharePoint n’est pas reconnu, il faut donc charger le snap-in
avant de pouvoir créer un script.
22
Windows PowerShell ISE (éditeur de scripts)
23. Scripts
Pour exécuter des scripts, il faut disposer de certaines autorisations.
Pour vérifier ces droits utilisez Get-ExecutionPolicy
Pour modifier ces autorisations, utilisez Set-ExecutionPolicy
23
Sécurité
24. Scripts
Ci-dessous, un exemple de script avec l’url du site paramétrable (à
renseigner lors de son exécution (F5))
24
Corps
25. Scripts
Enregistrez le script puis depuis une console Windows ou SharePoint
Management PowerShell, vous pouvez ensuite l’exécuter
25
Exécution
26. Scripts
Permet d’écrire un message dans la console
Vous pouvez afficher le message dans une autre couleur en ajoutant
-ForegroundColor à la fin de Write-Host
26
Write-Host
27. Scripts
Cette variable système indique quelle action doit être réalisée suite à une
erreur
Les valeurs possibles sont
Continue : affiche une erreur ET poursuit le programme (valeur par défaut)
SilentlyContinue : n’affiche pas d’erreur ET poursuit le programme
Inquire : demande à l’utilisateur quoi faire (arrêter / poursuivre)
Stop : affiche une erreur ET arrête le programme
Vous pouvez modifier cette variable
27
$ErrorActionPreference
28. Scripts
Vous pouvez utiliser ce paramètre pour toutes les commandes
PowerShell
Généralement, dans les scripts on utilise –ErrorAction et pas
$ErrorActionPreference
Pour capturer les erreurs via un bloc Try…Catch, il faut utiliser la valeur
Stop !
28
-ErrorAction (alias:-EA)
29. Scripts
Pour capturer les erreurs, utilisez cette instruction
Attention, si vous ne mettez pas –ErrorAction à Stop, vous ne pourrez
pas capturer l’erreur et voici le message renvoyé
29
Try…Catch
30. Scripts
Cette variable système stocke les erreurs rencontrées dans les scripts, il
s’agit d’un tableau dont l’erreur la plus récente est accessible via
$Error[0]
Vous pouvez utiliser également $_ ErrorRecord à la place de $Error[0]
30
$Error
31. Fonctions
Le script précédent peut être transformé en une fonction et celle-ci
appelée via son nom si vous utilisez l’ISE
31
Convertir un script en fonction
32. Fonctions
Attention, si vous utilisez la console en exécutant ce script (devenu une
fonction) vous obtenez une erreur
En effet, pour charger la fonction il faut utiliser cette notation (. Espace .)
32
Convertir un script en fonction
33. Fonctions
Le passage de paramètre peut se faire en ligne de commande si vous ne
souhaitez pas prompter l’utilisateur
33
Convertir un script en fonction
34. Fonctions
Permet de suivre pas à pas l’exécution du script
Dans ce cas, les messages que vous ajoutez via Write-Verbose ne
s’affichent pas si vous n’ajoutez pas -Verbose
34
Write-Verbose
35. Fonctions
Permet de suivre l’exécution du script en mode débogage
Dans ce cas, les messages que vous ajoutez via Write-Debug ne
s’affichent pas si vous n’ajoutez pas -Debug
35
Write-Debug
36. Modules
Un module peut contenir plusieurs fonctions
Il s’agit d’un fichier .psm1
Il peut être chargé automatiquement si il est placé au bon endroit ou
bien explicitement
Vous pouvez obtenir ces emplacements en utilisant cette commande
36
Késako ?
37. Modules
Cette cmdlet permet de voir les modules qui sont actuellement chargés
Pour consulter tous les modules ajouter -ListAvailable
37
Get-Module
38. Modules
Cette cmdlet permet de charger un module afin de pouvoir utiliser les
routines (fonctions etc) associés
38
Import-Module
39. Modules
Par défaut, la console PowerShell ne permet pas d’utiliser la fonction
Get-SiteTitle créée précédemment
Nous allons donc créer un module pour qu’elle soit chargée
automatiquement afin de pouvoir l’utiliser à tout moment
39
Convertir une fonction en module
40. Modules
Pour ce faire, enregistrez le script.ps1 sous
C:WindowsSystem32WindowsPowerShellv1.0ModulesAltranAltran.
psm1
Relancez une console, vous constatez que la fonction est chargée
automatiquement
40
Convertir une fonction en module
41. Profiles
A chaque ouverture de la console ou de l’ISE, un/des profile(s) sont
chargés automatiquement
Il s’agit d’un fichier .ps1 qui peut être stocké à plusieurs endroits et qui
peut contenir des commandes, modules, etc.
Il permet donc de charger automatiquement des commandes, des
modules, etc.
Par exemple, il est judicieux de créer un profile afin de pouvoir exécuter
les commandes SharePoint via la console Windows PowerShell car par
défaut elle ne le permet pas sans avoir chargé le snap-in au préalable
41
Késako ?
42. Profiles
Comme vous l’avez constatez, avec le SharePoint Management Shell il
n’est pas requis de charger le snap-in car dans son raccourci il est
inscrit
C:WindowsSystem32WindowsPowerShellv1.0PowerShell.exe -
NoExit " & ' C:Program FilesCommon FilesMicrosoft SharedWeb
Server
Extensions15CONFIGPOWERSHELLRegistrationsharepoint.ps1 ‘ "
Voici le contenu du fichier sharepoint.ps1
Nous allons donc utiliser ces commandes afin de créer un profile pour
qu’on ait plu à charger ce snap-in via la console Windows PowerShell
42
SharePoint Management Shell
43. Profiles
Avant de commencer, nous allons nous intéresser à ces deux variables
A partir de ces éléments, voici où peuvent être stockés nos profiles
43
Créer un profile
Profiles Console ISE
Current user, current host
$homeDocumentsWindowsPowerShell
Microsoft.PowerShell_profile.ps1
$homeDocumentsWindowsPowerShell
Microsoft.PowerShellISE_profile.ps1
Current user, all hosts $homeDocumentsWindowsPowerShell Profile.ps1
$homeDocumentsWindowsPowerShell
Profile.ps1
All users, current host $pshomeMicrosoft.PowerShell_profile.ps1 $pshomeMicrosoft.PowerShellISE_profile.ps1
All users, all hosts $pshomeProfile.ps1 $pshomeProfile.ps1
44. Profiles
Nous allons charger le snap-in afin que tous les utilisateurs puissent
disposer de ce profile, il sera donc stocké sous
C:WindowsSystem32WindowsPowerShellv1.0Profile.ps1
44
Créer un profile
45. Profiles
Pour tester, ouvrez une console Windows PowerShell puis tapez une
commande SharePoint
A présent, vous n’avez plus besoin d’ouvrir obligatoirement un
SharePoint Management Shell, vous pouvez utiliser la console Windows
PowerShell !
45
Créer un profile
46. Conclusion
D’autres articles, basés sur ce même modèle, viendront prochainement…et
orientés administrateurs, développeurs ou utilisateurs.
Pour ma part, j’ai pris beaucoup de plaisir à faire partager ces retours
d’expériences sur PowerShell en espérant que cet article sera apprécié,
autant dans son format que dans son contenu.
Des questions, suggestions d’articles, un projet ? Contactez-moi !
46
Ran MELLUL
Senior Architect & Practice Manager SharePoint
Altran Suisse
Mob. : +41 78 636 64 20
ran.mellul@altran.com
http://www.altran.ch