47
1 2016 SharePoint 2013 PowerShell - Retours d’expériences Ran MELLUL Practice Manager SharePoint Mob. : +41 78 636 64 20 [email protected] http://www.altran.ch

PowerShell - Retours dexpériences

Embed Size (px)

Citation preview

Page 1: PowerShell - Retours dexpériences

1

2 0 1 6

SharePoint 2013

PowerShell - Retours d’expériences

Ran MELLUL Practice Manager SharePointMob. : +41 78 636 64 [email protected]://www.altran.ch

Page 2: PowerShell - Retours dexpériences

2

01—

A propos

05—

Fonct ions

06—

Modules

07—

Prof i les

02—

PowerShel l

03—

Commandes

08—

Conclusion

04—

Scr ipts

Page 3: PowerShell - Retours dexpériences

A p ropos

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

Page 4: PowerShell - Retours dexpériences

PowerShe l l

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 ?

Page 5: PowerShell - Retours dexpériences

PowerShe l l

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

Page 6: PowerShell - Retours dexpériences

Commandes

Taper $PSVersionTable pour connaître la version utilisée

6

$PSVersionTable

Page 7: PowerShell - Retours dexpériences

Commandes

Au total, 810 commandes sont disponibles

7

Get-Command –PSSnapin Microsoft.SharePoint.PowerShell

Page 8: PowerShell - Retours dexpériences

Commandes

Cette cmdlet permet de consigner toutes les saisies dans un fichier texte

8

Start-Transcript

Page 9: PowerShell - Retours dexpériences

Commandes

Si vous n’êtes pas familiarisé avec les ft, fl, %, …, cette cmdlet est utile

9

Get-Alias

Page 10: PowerShell - Retours dexpériences

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

Page 11: PowerShell - Retours dexpériences

Commandes

Cette cmdlet permet de découvrir, exécuter et copier une commande

11

Show-Command

Page 12: PowerShell - Retours dexpériences

Commandes

Cette cmdlet permet de découvrir les membres (méthodes, propriétés) des objets

12

Get-Member (alias:gm)

Page 13: PowerShell - Retours dexpériences

Commandes

Cette cmdlet permet de sélectionner les propriétés à afficher

Depuis PowerShell 3.0, cette notation est possibleGet-SPWeb http://c4968397007 | select url,webtemplate

13

Select-Object (alias:select)

Page 14: PowerShell - Retours dexpériences

Commandes

Cette cmdlet permet de trier les propriétés

Cette notation est possibleGet-SPServiceApplication | sort DisplayName

14

Sort-Object (alias:sort)

Page 15: PowerShell - Retours dexpériences

Commandes

Cette cmdlet permet de filtrer les propriétés

Cette notation est possibleGet-SPServiceApplication | where DisplayName -like Sec*

15

Where-Object (alias:where)

Page 16: PowerShell - Retours dexpériences

Commandes

Cette cmdlet vous aidera à faire des aggrégations (compteur, somme, moyenne, max et min)

Vous pouvez utiliser cette notationGet-SPSite -Limit All | measure

16

Measure-Object (alias:measure)

Page 17: PowerShell - Retours dexpériences

Commandes

Tous les objets disposent de la propriété .count pour compter les éléments

17

(…).count

Page 18: PowerShell - Retours dexpériences

Commandes

Cette cmdlet permet d’afficher toutes les informations en supprimant les fameux …

18

Format-Table –AutoSize -Wrap (alias:ft)

Page 19: PowerShell - Retours dexpériences

Commandes

19

Format-Table –AutoSize -Wrap (alias:ft)

Page 20: PowerShell - Retours dexpériences

Commandes

Vous pouvez définir des variables pour faciliter l’écriture des commandes : $MaVariable=XXX

PowerShell utilise des variables système

20

Variables

Page 21: PowerShell - Retours dexpériences

Sc r i p t s

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)

Page 22: PowerShell - Retours dexpériences

Sc r i p t s

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)

Page 23: PowerShell - Retours dexpériences

Sc r i p t s

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é

Page 24: PowerShell - Retours dexpériences

Sc r i p t s

Ci-dessous, un exemple de script avec l’url du site paramétrable (à renseigner lors de son exécution (F5))

24

Corps

Page 25: PowerShell - Retours dexpériences

Sc r i p t s

Enregistrez le script puis depuis une console Windows ou SharePoint Management PowerShell, vous pouvez ensuite l’exécuter

25

Exécution

Page 26: PowerShell - Retours dexpériences

Sc r i p t s

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

Page 27: PowerShell - Retours dexpériences

Sc r i p t s

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

Page 28: PowerShell - Retours dexpériences

Sc r i p t s

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)

Page 29: PowerShell - Retours dexpériences

Sc r i p t s

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

Page 30: PowerShell - Retours dexpériences

Sc r i p t s

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

Page 31: PowerShell - Retours dexpériences

F onc t i ons

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

Page 32: PowerShell - Retours dexpériences

F onc t i ons

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

Page 33: PowerShell - Retours dexpériences

F onc t i ons

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

Page 34: PowerShell - Retours dexpériences

F onc t i ons

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

Page 35: PowerShell - Retours dexpériences

F onc t i ons

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

Page 36: PowerShell - Retours dexpériences

Modu les

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 ?

Page 37: PowerShell - Retours dexpériences

Modu les

Cette cmdlet permet de voir les modules qui sont actuellement chargés

Pour consulter tous les modules ajouter -ListAvailable

37

Get-Module

Page 38: PowerShell - Retours dexpériences

Modu les

Cette cmdlet permet de charger un module afin de pouvoir utiliser les routines (fonctions etc) associés

38

Import-Module

Page 39: PowerShell - Retours dexpériences

Modu les

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

Page 40: PowerShell - Retours dexpériences

Modu les

Pour ce faire, enregistrez le script.ps1 sous C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Altran\Altran.psm1

Relancez une console, vous constatez que la fonction est chargée automatiquement

40

Convertir une fonction en module

Page 41: PowerShell - Retours dexpériences

Pro f i l es

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 ?

Page 42: PowerShell - Retours dexpériences

Pro f i l es

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 inscritC:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -NoExit " & ' C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\CONFIG\POWERSHELL\Registration\\sharepoint.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

Page 43: PowerShell - Retours dexpériences

Pro f i l es

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$home\Documents\WindowsPowerShell

\Microsoft.PowerShell_profile.ps1

$home\Documents\WindowsPowerShell

\Microsoft.PowerShellISE_profile.ps1

Current user, all hosts $home\Documents\WindowsPowerShell \Profile.ps1$home\Documents\WindowsPowerShell

\Profile.ps1

All users, current host $pshome\Microsoft.PowerShell_profile.ps1 $pshome\Microsoft.PowerShellISE_profile.ps1

All users, all hosts $pshome\Profile.ps1 $pshome\Profile.ps1

Page 44: PowerShell - Retours dexpériences

Pro f i l es

Nous allons charger le snap-in afin que tous les utilisateurs puissent disposer de ce profile, il sera donc stocké sous C:\Windows\System32\WindowsPowerShell\v1.0\Profile.ps1

44

Créer un profile

Page 45: PowerShell - Retours dexpériences

Pro f i l es

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

Page 46: PowerShell - Retours dexpériences

Conc lus i on

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 SharePointAltran SuisseMob. : +41 78 636 64 [email protected]://www.altran.ch

Page 47: PowerShell - Retours dexpériences

47