Vous êtes sur la page 1sur 9

Denis.Pallez@unice.

fr Programmation de scripts objets avec PowerShell 2013-2014

Programmation de scripts objets


avec PowerShell

Objectif
Lobjectif de ce document est de vous faire dcouvrir un langage de scripts orient objets sous environnement
Windows avec comme fil conducteur ladministration de machines et dutilisateurs. Ce cours a t construit avec
la version 2 de Powershell; ce qui peut expliquer un certain nombre de diffrences si vous utilisez la version 3. Par
exemple, il n'y a plus d'aide en franais. En effet, afin d'avoir une aide constamment jour, Microsoft a dcid de
ne maintenir qu'une aide en anglais.
Une aide en ligne est disponible cette adresse http://technet.microsoft.com/fr-fr/library/bb978525.aspx mais
vous dcouvrirez des commandes qui permettent d'obtenir de l'aide automatiquement.

Il est demand que chaque tudiant envoi un mail la fin de chaque sance denis.pallez@unice.fr ayant
comme sujet [LPSIL_ADMIN] et contenant le fichier PDF (les rponses aux questions auront t saisies dans les
cadres Rponse ) renomm de la faon suivante <Nom tudiant>_TP<N du TP ou de la sance>_<date du TP en
anglais>.zip. Exemple de nom de fichier Pallez_TP1_20130909.pdf. Tout manquement cette rgle entranera la
note de 0 pour le TP.

1 Introduction Windows Powershell


Windows PowerShell comprend un interprteur de commandes et un
langage de script bas sur les tches, conu spcialement pour
l'administration du systme. Cr partir de Microsoft .NET
Framework, Windows PowerShell aide les professionnels de
linformatique et les utilisateurs chevronns contrler et
automatiser ladministration du systme dexploitation Windows, ainsi
que les applications sexcutant sous Windows. Les commandes
Windows PowerShell intgres, appeles cmdlets (ou applets de
commande), vous permettent de grer les ordinateurs de votre
entreprise partir de la ligne de commande. Les providers Windows
PowerShell vous permettent d'accder des magasins de donnes, par exemple le Registre et le magasin de
certificats, aussi facilement que si vous accdiez au systme de fichiers. En outre, Windows PowerShell dispose
dun puissant analyseur dexpressions et dun langage de script trs complet. Windows PowerShell comprend
les fonctionnalits suivantes :

Cmdlets qui excutent des tches dadministration systme courantes, par exemple la gestion du
Registre, des services, des processus et des journaux dvnements, ainsi que lutilisation de
linfrastructure WMI (Windows Management Instrumentation) ;
Langage de script bas sur les tches et une prise en charge des scripts et des outils en ligne de
commande existants ;

LP ADMIN IUT de Nice Dpartement Informatique 1


Denis.Pallez@unice.fr Programmation de scripts objets avec PowerShell 2013-2014

Conception cohrente. Dans la mesure o les magasins de donnes systme et les cmdlets
Windows PowerShell utilisent une syntaxe et des conventions daffectation de noms communes,
les donnes peuvent tre partages facilement ; en outre, la sortie dune cmdlet peut servir
dentre pour une autre cmdlet sans nouvelle mise en forme ou manipulation ;
Navigation simplifie au sein du systme dexploitation laide de commandes, ce qui permet aux
utilisateurs de naviguer dans le Registre et dautres magasins de donnes de la mme faon que
dans le systme de fichiers ;
Puissantes fonctionnalits de manipulation dobjets. Les objets peuvent tre manipuls
directement ou envoys vers dautres outils ou bases de donnes ;
Interface extensible. Les diteurs de logiciels indpendants et les dveloppeurs professionnels
peuvent crer des outils et utilitaires personnaliss afin dadministrer leurs logiciels.

2 Installation / Lancement de PowerShell


Pour excuter PowerShell, tout dpend de la version de Windows sur laquelle vous travaillez. Si vous utilisez
Windows7 ou Windows Server 2008 R2, vous navez rien faire, cest pr-installer. Pour des versions antrieures,
vous devez le tlcharger et linstaller. Pour plus de dtails, rendez vous sur la page officielle de Microsoft
http://microsoft.com/powershell. Cette page contient les liens pour les installateurs appropris ainsi que de la
documentation et autres documents intressants. Powershell est dj install sur les machines de l'IUT.

PowerShell se prsente sous deux formes :

La console PowerShell (PS) qui interprte les commandes en ligne (Figure 1 gauche),
Un environnement graphique de dveloppement de scripts PowerShell Integrated Scripting
Environment (PS-ISE) (Figure 1 droite).

Figure 1. Interfaces de PowerShell

Pour lancer PS, aller dans le menu Dmarrer > Tous les Programmes > Accessoires >
Windows PowerShell et choisissez linterface souhaite. Vous pouvez galement choisir entre une version
32 bits (x86) ou 64 bits. Il est galement possible de lancer PS avec l'interprteur classique de commandes de
Windows (cmd.exe) avec la commande powershell.

Pour ceux qui ne connatraient pas la notion de ligne de commande, visitez les pages suivantes :
http://fr.wikipedia.org/wiki/Interpr%C3%A9teur_de_commandes et http://fr.wikipedia.org/wiki/Cmd.exe.

LP ADMIN IUT de Nice Dpartement Informatique 2


Denis.Pallez@unice.fr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 1 Excutez la commande dir dans un environnement PowerShell et dans l'interprteur de


commandes classique de Windows (cmd.exe). Quelles sont les diffrences ?

Rponse :

Lutilisation de lenvironnement de dveloppement de scripts (PS-ISE) permet davoir plusieurs sessions


simultanment ainsi que la possibilit de dboguer.

Exercice 2 Dans l'interprteur de commandes Windows (cmd.exe), afficher laide (help) de la commande
Powershell. Comment peut-on excuter la commande Get-ChildItem de PowerShell tout en restant
en ligne de commande Windows mais en minimisant la fentre courante ? Que fait l'instruction Get-
ChildItem ?

Rponse :

3 Les commandlets de base


Comme vous venez de lapercevoir prcdemment, Windows PS introduit des commandes un peu spciales
appeles cmdlet (prononcer command-let ). Une cmdlet est la plus petite unit rendant une fonctionnalit.
Plutt que d'tre trs complexe, le plupart des cmdlets sont simples et possdent peu de proprits associes.
Une cmdlet s'utilise de la mme faon qu'une commande classique. Elle nest pas sensitive la casse. Elles
respectent un format bien prcis <verbe>-<action>. Le verbe prcise ce que fait la cmdlet en gnral alors
que le nom prcise sur quoi la cmdlet va agir. Par exemple, la cmdlet Get-Variable va rcuprer une variable
de PS et retourner sa valeur. En PS v3.0, il existe 303 cmdlets diffrentes.

Exercice 3 Testez la cmdlet Get-Variable sans prciser de variable prcise. Quel est le rsultat ? Quelle est
la valeur de PSHOME ?

Rponse :

LP ADMIN IUT de Nice Dpartement Informatique 3


Denis.Pallez@unice.fr Programmation de scripts objets avec PowerShell 2013-2014

Vous trouverez ci-dessous un tableau des verbes les plus communs pour les cmdlets :

Verbe de la cmdlet Signification


Add Ajoute une instance d'un item
Clear Supprime le contenu d'un item comme la valeur d'une variable
ConvertFrom / Convertie un item d'un format un autre, comme une liste de valeurs spares par des virgules en
ConvertTo des proprits d'un objet
Disable / Enable Annule / Autorise un certain paramtrage comme une connexion distance
Export / Import Exporte / Importe les proprits dun item dans un format particulier comme exporter les
proprits de la console en XML
Get Interroge un objet comme obtenir la liste des processus
Invoke Excute une instance dun item comme une expression
New / Remove Cre / Supprime une nouvelle instance dun item, comme une nouvelle variable ou vnement
Set Modifie les paramtres dun objet
Start / Stop Dmarre / Arrte une instance dun item comme un service ou un processus
Test Test une instance dun item pour une valeur spcifique comme tester une connexion pour savoir si
elle est valide
Write Excute une opration dcriture dune instance dun objet comme crire un vnement sur le
gestionnaire de log dvnements

Afin davoir une ide plus prcise de lutilit des prcdentes cmdlet, vous trouverez ci-dessous un tableau
rsumant les cmdlet souvent utiliss des fins dadministration :

Verbe de la cmdlet Signification


Add-Computer / Remove-Computer Ajoute ou supprime lappartenance dun ordinateur dans un domaine ou groupe
de travail
Checkpoint-Computer / Restore- Cr un point de restauration du systme pour un ordinateur / restaure
Computer lordinateur
Compare-Object / Group-Object / Sort- Comparaison / groupement / trie / slection / cration dobjets
Object / Select-Object /
New-Object
ConvertFrom-SecureString / Cration / export de chaine scurises
ConvertTo-SecureString
Debug-Process Dboguer un processus sexcutant sur un ordinateur
Get-Alias / New-Alias / Set-Alias / Rcuprer / crer / paramtrer / exporter / importer des alias
Export-Alias / Import-Alias
Get-AuthenticodeSignature / Set- Rcuprer / paramtrer la signature dun objet associ un fichier
AuthenticodeSignature
Get-Command / Invoke-Command / Rcuprer des informations sur / invoquer / mesurer le temps dexcution /
Measure-Command / Trace-Command tracer des cmdlets
Get-EventLog / Write-EventLog / Clear- Rcuprer / crire / effacer des vnements de log
EventLog
Get-ExecutionPolicy / Traite de la politique dexcution du shell courant
Set-ExecutionPolicy
Get-Help Devinez ?
Get-Host Rcupre des informations de lapplication hte de PS
Get_HotFix Rcupre les modifications apportes un ordinateur
Get-Location / Set-Location Affiche ou slectionne le rpertoire courant
Get-Process/ Start-Process/ Stop- Rcupre / Dmarre / Arrte un processus sur une machine
Process
Get-PSDrive/ New-PSDrive/ Remove- Rcupre / Cre / Supprime un disque spcifique PowerShell
PSDrive
Get-Service/ New-Service/ Set-Service Rcupre / Cre / Dfinit un service
Get-Variable/ New-Variable/ Set-Variable/ Cmdlets pour la gestion des variables
Remove-Variable/ Clear-Variable
Import-Counter/ Export-Counter Importe / Exporte les donnes de compteur de performance

LP ADMIN IUT de Nice Dpartement Informatique 4


Denis.Pallez@unice.fr Programmation de scripts objets avec PowerShell 2013-2014

Read-Host/ Write-Host/ Clear-Host Lecture dans / Ecriture dans / Efface la fentre hte
Rename-Computer/ Stop-Computer/ Renomme / Arrte / Redmarre un ordinateur
Restart-Computer
Reset-ComputerMachinePassword Rinitialise le mot de passe du compte de l'ordinateur

Exercice 4 Affichez laide disponible pour la cmdlet remove-item. Ensuite faites de mme en incluant les
exemples. Vous pouvez demander de laide sur laide ! Testez galement la commande help. Quelles
diffrences observez-vous ?

Rponse :

Si vous cherchez de laide pas forcment sur une instruction mais plutt sur une instruction basique ou sur des
concepts de base, utilisez linstruction Get-Help about ou help about.

Exercice 5 Quelles sont les cmdlets PS pour excuter ces tches : (1) copier / (2) dplacer un fichier dans un
rpertoire diffrent du rpertoire courant, (3) changer de rpertoire, (4) renommer un fichier, (5) crer /
supprimer (6) un rpertoire, (7) supprimer un fichier, (8) afficher le contenu dun fichier

Rponse :

La commande Get-Help donne de laide sur des choses pour lesquelles des fichiers daide sont disponibles dans
PS. La commande Get-Command est complmentaire Get-Help puisquelle donne de laide sur des choses
qui peuvent tre excutes comme les cmdlets, les fonctions, les scripts, et mme des fichiers Windows. Il est
galement possible d'afficher l'aide d'une seule commande disponible chez Microsoft en utilisant l'option
-online.

Exercice 6 Excutez la cmdlet Get-Command ipconfig.exe | Format-List.

LP ADMIN IUT de Nice Dpartement Informatique 5


Denis.Pallez@unice.fr Programmation de scripts objets avec PowerShell 2013-2014

Rponse :

Exercice 7 Il est galement possible dutiliser Get-Command pour dcouvrir les commandes possibles sur un
thme particulier. Par exemple, vous ne vous souvenez plus des commandes lies aux processus. Saisissez la
cmdlet Get-Command *process*. En utilisant l'aide, afficher que les fonctions.

Rponse :

Exercice 8 Rcuprez la version de PS qui sexcute sur votre machine ? Rcuprer uniquement la valeur et pas
toutes les informations (pour cela, utilisez laide) ? Cest un premier aperu de la notion dobjets.

Rponse :

3.1 Les alias


Il est possible dassocier un surnom une commande. Cela peut se faire laide de la cmdlet Set-Alias.

Exercice 9 quoi correspond lalias gal et essayer de trouver lalias de Get-Content ? Est-il possible
davoir plusieurs alias pour la mme commande ?

Rponse :

LP ADMIN IUT de Nice Dpartement Informatique 6


Denis.Pallez@unice.fr Programmation de scripts objets avec PowerShell 2013-2014

4 Configuration et Personnalisation de PowerShell


Par dfaut, la console PS sexcute avec un texte blanc sur fond bleu. Imaginons que cela ne vous convienne pas
et que vous souhaitiez en changer. Tapez la ligne suivante pour changer la couleur de fond :
$Host.UI.RawUI.BackgroundColor=magenta. Saisissez ensuite linstruction clear. Il est conseill
dutiliser la touche <TABULATION> pour faire appel la compltion et ainsi viter de saisir un mot au complet
ou encore de connaitre les diffrentes possibilits. Modifiez la couleur du texte en jaune en utilisant la proprit
ForegroundColor.
$Host est une variable spciale qui rfrence un objet reprsentant la console courante.

Exercice 10 La couleur vous parait horrible ! Cest normal, pour moi aussi. Fermez la console et relancer PS. Que
constatez-vous ?

Rponse :

Comme vous ne souhaitez pas personnaliser votre console chaque fois que vous en ouvrez une, il est possible
de la personnaliser par dfaut en modifiant votre profile. Les informations sur votre profile peuvent tre
contenues dans quatre fichiers diffrents. Pourquoi autant ? Les informations de configuration peuvent tre
appliques pour tous les utilisateurs ou pour un seul. Vous pouvez excuter PS en ligne de commande ou via un
outil tiers. Les 4 fichiers correspondent aux diffrentes combinaisons possibles.

Exercice 11 Tapez la commande $profile pour savoir o se trouve votre profile. Par dfaut, votre profile PS se
trouve dans le fichier nomm Microsoft.PowerShell_profile.ps1 dans le rpertoire
WindowsPowerShell de votre rpertoire MesDocuments. Il se peut que ce fichier nexiste pas encore et
dans ce cas, PS prend des valeurs par dfaut. Crez ce fichier (mme vide) dans le bon rpertoire. Modifiez ce
fichier avec la ligne suivante : $Host.UI.RawUI.WindowTitle=Mon Windows PowerShell
Personalis!. Relancer PS.

Rponse :

Malheureusement, PowerShell sexcute mais avec une erreur et lcran suivant saffiche :

Ceci est normal : par dfaut, PS ne vous laissera pas excuter de scripts (y compris votre profile) tant quil naura
pas t sign par un certificat pour des raisons de scurit. Ceci fera lobjet dun travail ultrieur mais pour

LP ADMIN IUT de Nice Dpartement Informatique 7


Denis.Pallez@unice.fr Programmation de scripts objets avec PowerShell 2013-2014

linstant, pour voir si votre profil fonctionne, il faut changer le comportement par dfaut de PS en lui donnant la
possibilit dexcuter des scripts locaux avec la commande suivante : Set-ExecutionPolicy
RemoteSigned. En acceptant la modification de la stratgie dexcution, il se peut que vous ayez une autre
erreur qui vous prcise que vous navez pas accs la base de registre. Pour rsoudre ce problme, vous devez
relancer PS en tant quadministrateur (clic-droit sur le programme Windows PowerShell et choisir loption
Excuter en tant quadministrateur). Si vous souhaitez revenir comme avant, utiliser la valeur
Restricted la place de RemoteSigned.

Vous pouvez galement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui
autorisera PS se plaindre quand vous utiliserez une variable qui na pas t initialise. Ensuite, saisissez la
commande $ErrorActionPreference = "stop" qui autorisera PS sarrter ds quun script contiendra
une erreur. Pendant la saisie dune commande, pensez utiliser la touche <TAB> pour utiliser la compltion.

Pour information, PS-ISE possde galement un profile contenu dans le script


Microsoft.PowerShellISE_profile.ps1 et lobjet correspondant PS-ISE est $psISE.

4.1 Installation du PS Community Extension


Une librairie supplmentaire peut tre installe en plus de PowerShell ; elle est disponible cette adresse
http://pscx.codeplex.com/. Elle n'est pas ncessaire pour utiliser PS mais elle permet d'ajouter des fonctionnalits
assez puissantes. Par exemple, elle installe la possibilit de lancer PS n'importe o dans un explorateur Windows
( Open PowerShell here ) avec une instance de PowerShell ayant un rpertoire de travail correspondant au
rpertoire slectionn. Par ailleurs, il y a des fonctions qui traitent du presse-papier (Get-Clipboard & Out-
Clipboard), ou encore lenvoi de-mails (Send-SmtpMail). Il est galement possible de jouer avec des outils
de synthse vocale via Out-Speech.
Le seul inconvnient linstallation de cette librairie est la lenteur au dmarrage de PS.

4.2 O sauvegarder mes scripts


Vous venez dcrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez frquemment. Reste
savoir o il faut les stocker. Il existe plusieurs faons de sauvegarder des scripts en PS.

La plus simple consiste modifier votre profil et stocker les scripts cet endroit. Toutefois, vous prfrez peut
tre avoir des fichiers spars pour vos scripts. Pour cela, il est possible dajouter les noms de fichiers au profile
pour quils soient tlchargs et accessibles. Il suffit dajouter la ligne suivante votre profil :

. c:\foo\bar\myfunctions.ps1
Exercice 12 Une autre option consiste crer un disque spcifique, connu uniquement de PS, pour toutes vos
fonctions ou scripts. crivez la commande qui permet de le faire en utilisant new-Psdrive. vitez toutes
interactions avec lutilisateur ; toutes les informations doivent se trouver dans la commande. Vous pourrez
excuter vos scripts en tapant scripts:myscript.ps1 si le disque cr sappelle scripts. Testez la
cration de ce disque en crant un script qui affiche les processus courants.

Rponse :

LP ADMIN IUT de Nice Dpartement Informatique 8


Denis.Pallez@unice.fr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS. Relancer le et excutez le dernier script cr. Que se passe-t-il ? Pourquoi ?

Rponse :

Exercice 14 Faites en sorte que le disque spcifique cr prcdemment scripts soit connu chaque
lancement de PS (cf. ). Choisissez bien le chemin que vous allez utiliser car nous allons lutiliser dans le reste
du cours.

Rponse :

4.3 Ajouter ses propres fonctions dans le menu de PS-ISE


Une des caractristiques les plus intressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que
nous utilisons souvent pour ladministration comme nous lavons fait plus haut pour la ligne de commande. Il est
donc possible de personnaliser les menus de PS-ISE. Pour cela, il suffit dcrire sa cmdlet ou fonction et
dappliquer la mthode Add sur le contenu de la variable CurrentPowerShellTab.AddOnsMenu.
Submenus (qui est une collection) de lobjet psISE.

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnalis qui ajoute une commande qui
affiche les processus courants. Pour cela, utilisez la mthode Add("Nom du sous-menu", {votre-
Commande},"Raccourci-clavier") sur la collection prcdente afin dobtenir le rsultat ci-dessous :

Rponse :

LP ADMIN IUT de Nice Dpartement Informatique 9

Vous aimerez peut-être aussi