9

Click here to load reader

Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

Embed Size (px)

Citation preview

Page 1: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014Programmation de scripts objetsavec PowerShellObjectifLrsquoobjectif de ce document est de vous faire deacutecouvrir un langage de scripts orienteacute objets sous environnement Windows avec comme fil conducteur lrsquoadministration de machines et drsquoutilisateurs Ce cours a eacuteteacute construit avec la version 2 de Powershell ce qui peut expliquer un certain nombre de diffeacuterences si vous utilisez la version 3 Par exemple il ny a plus daide en franccedilais En effet afin davoir une aide constamment agrave jour Microsoft a deacutecideacute de ne maintenir quune aide en anglais Une aide en ligne est disponible agrave cette adresse httptechnetmicrosoftcomfr-frlibrarybb978525aspx mais vous deacutecouvrirez des commandes qui permettent dobtenir de laide automatiquement

Il est demandeacute que chaque eacutetudiant envoi un mail agrave la fin de chaque seacuteance agrave denispallezunicefr ayant comme sujet [LPSIL_ADMIN] et contenant le fichier PDF (les reacuteponses aux questions auront eacuteteacute saisies dans les cadres laquo Reacuteponse raquo) renommeacute de la faccedilon suivante ltNom eacutetudiantgt_TPltNdeg du TP ou de la seacuteancegt_ltdate du TP en anglaisgtzip Exemple de nom de fichier Pallez_TP1_20130909pdf Tout manquement agrave cette regravegle entraicircnera la note de 0 pour le TP

1 Introduction agrave Windows Powershell Windows PowerShelltrade comprend un interpreacuteteur de commandes et un langage de script baseacute sur les tacircches conccedilu speacutecialement pour ladministration du systegraveme Creacuteeacute agrave partir de Microsoft NET Framework Windows PowerShelltrade aide les professionnels de lrsquoinformatique et les utilisateurs chevronneacutes agrave controcircler et agrave automatiser lrsquoadministration du systegraveme drsquoexploitation Windows ainsi que les applications srsquoexeacutecutant sous Windows Les commandes Windows PowerShell inteacutegreacutees appeleacutees cmdlets (ou applets de commande) vous permettent de geacuterer les ordinateurs de votre entreprise agrave partir de la ligne de commande Les providers Windows PowerShelltrade vous permettent dacceacuteder agrave des magasins de donneacutees par exemple le Registre et le magasin de certificats aussi facilement que si vous acceacutediez au systegraveme de fichiers En outre Windows PowerShelltrade dispose drsquoun puissant analyseur drsquoexpressions et drsquoun langage de script tregraves complet Windows PowerShelltrade comprend les fonctionnaliteacutes suivantes

bull Cmdlets qui exeacutecutent des tacircches drsquoadministration systegraveme courantes par exemple la gestion du Registre des services des processus et des journaux drsquoeacuteveacutenements ainsi que lrsquoutilisation de lrsquoinfrastructure WMI (Windows Management Instrumentation)

bull Langage de script baseacute sur les tacircches et une prise en charge des scripts et des outils en ligne de commande existants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 1

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

bull Conception coheacuterente Dans la mesure ougrave les magasins de donneacutees systegraveme et les cmdlets Windows PowerShell utilisent une syntaxe et des conventions drsquoaffectation de noms communes les donneacutees peuvent ecirctre partageacutees facilement en outre la sortie drsquoune cmdlet peut servir drsquoentreacutee pour une autre cmdlet sans nouvelle mise en forme ou manipulation

bull Navigation simplifieacutee au sein du systegraveme drsquoexploitation agrave lrsquoaide de commandes ce qui permet aux utilisateurs de naviguer dans le Registre et drsquoautres magasins de donneacutees de la mecircme faccedilon que dans le systegraveme de fichiers

bull Puissantes fonctionnaliteacutes de manipulation drsquoobjets Les objets peuvent ecirctre manipuleacutes directement ou envoyeacutes vers drsquoautres outils ou bases de donneacutees

bull Interface extensible Les eacutediteurs de logiciels indeacutependants et les deacuteveloppeurs professionnels peuvent creacuteer des outils et utilitaires personnaliseacutes afin drsquoadministrer leurs logiciels

2 Installation Lancement de PowerShellPour exeacutecuter PowerShell tout deacutepend de la version de Windows sur laquelle vous travaillez Si vous utilisez Windows7 ou Windows Server 2008 R2 vous nrsquoavez rien agrave faire crsquoest preacute-installer Pour des versions anteacuterieures vous devez le teacuteleacutecharger et lrsquoinstaller Pour plus de deacutetails rendez vous sur la page officielle de Microsoft httpmicrosoftcompowershell Cette page contient les liens pour les installateurs approprieacutes ainsi que de la documentation et autres documents inteacuteressants Powershell est deacutejagrave installeacute sur les machines de lIUT

PowerShell se preacutesente sous deux formes

bull La console PowerShell (PS) qui interpregravete les commandes en ligne (Figure 1 agrave gauche)bull Un environnement graphique de deacuteveloppement de scripts ndash PowerShell Integrated Scripting

Environment (PS-ISE) (Figure 1 agrave droite)

Figure 1 Interfaces de PowerShell

Pour lancer PS aller dans le menu Deacutemarrer gt Tous les Programmes gt Accessoires gt Windows PowerShell et choisissez lrsquointerface souhaiteacutee Vous pouvez eacutegalement choisir entre une version 32 bits (x86) ou 64 bits Il est eacutegalement possible de lancer PS avec linterpreacuteteur classique de commandes de Windows (cmdexe) avec la commande powershell

Pour ceux qui ne connaicirctraient pas la notion de ligne de commande visitez les pages suivantes httpfrwikipediaorgwikiInterprC3A9teur_de_commandes et httpfrwikipediaorgwikiCmdexe

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 2

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 1 Exeacutecutez la commande dir dans un environnement PowerShell et dans linterpreacuteteur de commandes classique de Windows (cmdexe) Quelles sont les diffeacuterences

Lrsquoutilisation de lrsquoenvironnement de deacuteveloppement de scripts (PS-ISE) permet drsquoavoir plusieurs sessions simultaneacutement ainsi que la possibiliteacute de deacuteboguer

Exercice 2 Dans linterpreacuteteur de commandes Windows (cmdexe) afficher lrsquoaide (help) de la commande Powershell Comment peut-on exeacutecuter la commande Get-ChildItem de PowerShell tout en restant en ligne de commande Windows mais en minimisant la fenecirctre courante Que fait linstruction Get-ChildItem

3 Les commandlets de baseComme vous venez de lrsquoapercevoir preacuteceacutedemment Windows PS introduit des commandes un peu speacuteciales appeleacutees cmdlet (prononcer laquo command-let raquo) Une cmdlet est la plus petite uniteacute rendant une fonctionnaliteacute Plutocirct que decirctre tregraves complexe le plupart des cmdlets sont simples et possegravedent peu de proprieacuteteacutes associeacutees Une cmdlet sutilise de la mecircme faccedilon quune commande classique Elle nrsquoest pas sensitive agrave la casse Elles respectent un format bien preacutecis ltverbegt-ltactiongt Le verbe preacutecise ce que fait la cmdlet en geacuteneacuteral alors que le nom preacutecise sur quoi la cmdlet va agir Par exemple la cmdlet Get-Variable va reacutecupeacuterer une variable de PS et retourner sa valeur En PS v30 il existe 303 cmdlets diffeacuterentes

Exercice 3 Testez la cmdlet Get-Variable sans preacuteciser de variable preacutecise Quel est le reacutesultat Quelle est la valeur de PSHOME

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 3

DenisPallezunicefr 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 SignificationAdd Ajoute une instance dun itemClear Supprime le contenu dun item comme la valeur dune variableConvertFrom ConvertTo

Convertie un item dun format agrave un autre comme une liste de valeurs seacutepareacutees par des virgules en des proprieacuteteacutes dun objet

Disable Enable Annule Autorise un certain parameacutetrage comme une connexion agrave distanceExport Import Exporte Importe les proprieacuteteacutes drsquoun item dans un format particulier comme exporter les

proprieacuteteacutes de la console en XMLGet Interroge un objet comme obtenir la liste des processusInvoke Exeacutecute une instance drsquoun item comme une expressionNew Remove Creacutee Supprime une nouvelle instance drsquoun item comme une nouvelle variable ou eacuteveacutenementSet Modifie les paramegravetres drsquoun objetStart Stop Deacutemarre Arrecircte une instance drsquoun item comme un service ou un processusTest Test une instance drsquoun item pour une valeur speacutecifique comme tester une connexion pour savoir si

elle est valideWrite Exeacutecute une opeacuteration drsquoeacutecriture drsquoune instance drsquoun objet comme eacutecrire un eacuteveacutenement sur le

gestionnaire de log drsquoeacuteveacutenements

Afin drsquoavoir une ideacutee plus preacutecise de lrsquoutiliteacute des preacuteceacutedentes cmdlet vous trouverez ci-dessous un tableau reacutesumant les cmdlet souvent utiliseacutes agrave des fins drsquoadministration

Verbe de la cmdlet SignificationAdd-Computer Remove-Computer Ajoute ou supprime lrsquoappartenance drsquoun ordinateur dans un domaine ou groupe

de travailCheckpoint-Computer Restore-Computer

Creacuteeacute un point de restauration du systegraveme pour un ordinateur restaure lrsquoordinateur

Compare-Object Group-Object Sort-Object Select-Object New-Object

Comparaison groupement trie seacutelection creacuteation drsquoobjets

ConvertFrom-SecureString ConvertTo-SecureString

Creacuteation export de chaine seacutecuriseacutees

Debug-Process Deacuteboguer un processus srsquoexeacutecutant sur un ordinateurGet-Alias New-Alias Set-Alias Export-Alias Import-Alias

Reacutecupeacuterer creacuteer parameacutetrer exporter importer des alias

Get-AuthenticodeSignature Set-AuthenticodeSignature

Reacutecupeacuterer parameacutetrer la signature drsquoun objet associeacute agrave un fichier

Get-Command Invoke-Command Measure-Command Trace-Command

Reacutecupeacuterer des informations sur invoquer mesurer le temps drsquoexeacutecution tracer des cmdlets

Get-EventLog Write-EventLog Clear-EventLog

Reacutecupeacuterer eacutecrire effacer des eacuteveacutenements de log

Get-ExecutionPolicy Set-ExecutionPolicy

Traite de la politique drsquoexeacutecution du shell courant

Get-Help Devinez hellip Get-Host Reacutecupegravere des informations de lrsquoapplication hocircte de PSGet_HotFix Reacutecupegravere les modifications apporteacutees agrave un ordinateurGet-Location Set-Location Affiche ou seacutelectionne le reacutepertoire courantGet-Process Start-Process Stop-Process

Reacutecupegravere Deacutemarre Arrecircte un processus sur une machine

Get-PSDrive New-PSDrive Remove-PSDrive

Reacutecupegravere Creacutee Supprime un disque speacutecifique PowerShell

Get-Service New-Service Set-Service Reacutecupegravere Creacutee Deacutefinit un service Get-Variable New-Variable Set-VariableRemove-Variable Clear-Variable

Cmdlets pour la gestion des variables

Import-Counter Export-Counter Importe Exporte les donneacutees de compteur de performance

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 4

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Read-Host Write-Host Clear-Host Lecture dans Ecriture dans Efface la fenecirctre hocircteRename-Computer Stop-ComputerRestart-Computer

Renomme Arrecircte Redeacutemarre un ordinateur

Reset-ComputerMachinePassword Reacuteinitialise le mot de passe du compte de lordinateur

Exercice 4 Affichez lrsquoaide disponible pour la cmdlet remove-item Ensuite faites de mecircme en incluant les exemples Vous pouvez demander de lrsquoaide sur lrsquoaide Testez eacutegalement la commande help Quelles diffeacuterences observez-vous

Si vous cherchez de lrsquoaide pas forceacutement sur une instruction mais plutocirct sur une instruction basique ou sur des concepts de base utilisez lrsquoinstruction Get-Help about ou help about

Exercice 5 Quelles sont les cmdlets PS pour exeacutecuter ces tacircches (1) copier (2) deacuteplacer un fichier dans un reacutepertoire diffeacuterent du reacutepertoire courant (3) changer de reacutepertoire (4) renommer un fichier (5) creacuteer supprimer (6) un reacutepertoire (7) supprimer un fichier (8) afficher le contenu drsquoun fichier

La commande Get-Help donne de lrsquoaide sur des choses pour lesquelles des fichiers drsquoaide sont disponibles dans PS La commande Get-Command est compleacutementaire agrave Get-Help puisqursquoelle donne de lrsquoaide sur des choses qui peuvent ecirctre exeacutecuteacutees comme les cmdlets les fonctions les scripts et mecircme des fichiers Windows Il est eacutegalement possible dafficher laide dune seule commande disponible chez Microsoft en utilisant loption -online

Exercice 6 Exeacutecutez la cmdlet Get-Command ipconfigexe | Format-List

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 5

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 7 Il est eacutegalement possible drsquoutiliser Get-Command pour deacutecouvrir les commandes possibles sur un thegraveme particulier Par exemple vous ne vous souvenez plus des commandes lieacutees aux processus Saisissez la cmdlet Get-Command process En utilisant laide afficher que les fonctions

Exercice 8 Reacutecupeacuterez la version de PS qui srsquoexeacutecute sur votre machine Reacutecupeacuterer uniquement la valeur et pas toutes les informations (pour cela utilisez lrsquoaide) Crsquoest un premier aperccedilu de la notion drsquoobjets

31 Les aliasIl est possible drsquoassocier un laquo surnom raquo agrave une commande Cela peut se faire agrave lrsquoaide de la cmdlet Set-Alias

Exercice 9 Agrave quoi correspond lrsquoalias gal et essayer de trouver lrsquoalias de Get-Content Est-il possible drsquoavoir plusieurs alias pour la mecircme commande

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 6

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

4 Configuration et Personnalisation de PowerShellPar deacutefaut la console PS srsquoexeacutecute 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 $HostUIRawUIBackgroundColor=rdquomagentardquo Saisissez ensuite lrsquoinstruction clear Il est conseilleacute drsquoutiliser la touche ltTABULATIONgt pour faire appel agrave la compleacutetion et ainsi eacuteviter de saisir un mot au complet ou encore de connaitre les diffeacuterentes possibiliteacutes Modifiez la couleur du texte en jaune en utilisant la proprieacuteteacute ForegroundColor$Host est une variable speacuteciale qui reacutefeacuterence un objet repreacutesentant la console courante

Exercice 10 La couleur vous parait horrible Crsquoest normal pour moi aussi Fermez la console et relancer PS Que constatez-vous

Comme vous ne souhaitez pas personnaliser votre console agrave chaque fois que vous en ouvrez une il est possible de la personnaliser par deacutefaut en modifiant votre profile Les informations sur votre profile peuvent ecirctre contenues dans quatre fichiers diffeacuterents Pourquoi autant Les informations de configuration peuvent ecirctre appliqueacutees pour tous les utilisateurs ou pour un seul Vous pouvez exeacutecuter PS en ligne de commande ou via un outil tiers Les 4 fichiers correspondent aux diffeacuterentes combinaisons possibles

Exercice 11 Tapez la commande $profile pour savoir ougrave se trouve votre profile Par deacutefaut votre profile PS se trouve dans le fichier nommeacute MicrosoftPowerShell_profileps1 dans le reacutepertoire WindowsPowerShell de votre reacutepertoire MesDocuments Il se peut que ce fichier nrsquoexiste pas encore et dans ce cas PS prend des valeurs par deacutefaut Creacuteez ce fichier (mecircme vide) dans le bon reacutepertoire Modifiez ce fichier avec la ligne suivante $HostUIRawUIWindowTitle=rdquoMon Windows PowerShell Personaliseacuterdquo Relancer PS

Malheureusement PowerShell srsquoexeacutecute mais avec une erreur et lrsquoeacutecran suivant srsquoaffiche

Ceci est normal par deacutefaut PS ne vous laissera pas exeacutecuter de scripts (y compris votre profile) tant qursquoil nrsquoaura pas eacuteteacute signeacute par un certificat pour des raisons de seacutecuriteacute Ceci fera lrsquoobjet drsquoun travail ulteacuterieur mais pour

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 7

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

lrsquoinstant pour voir si votre profil fonctionne il faut changer le comportement par deacutefaut de PS en lui donnant la possibiliteacute drsquoexeacutecuter des scripts locaux avec la commande suivante Set-ExecutionPolicy RemoteSigned En acceptant la modification de la strateacutegie drsquoexeacutecution il se peut que vous ayez une autre erreur qui vous preacutecise que vous nrsquoavez pas accegraves agrave la base de registre Pour reacutesoudre ce problegraveme vous devez relancer PS en tant qursquoadministrateur (clic-droit sur le programme Windows PowerShell et choisir lrsquooption Exeacutecuter en tant qursquoadministrateur) Si vous souhaitez revenir comme avant utiliser la valeur Restricted agrave la place de RemoteSigned

Vous pouvez eacutegalement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui autorisera PS agrave se plaindre quand vous utiliserez une variable qui nrsquoa pas eacuteteacute initialiseacutee Ensuite saisissez la commande $ErrorActionPreference = stop qui autorisera PS agrave srsquoarrecircter deacutes qursquoun script contiendra une erreur Pendant la saisie drsquoune commande pensez agrave utiliser la touche ltTABgt pour utiliser la compleacutetion

Pour information PS-ISE possegravede eacutegalement un profile contenu dans le script MicrosoftPowerShellISE_profileps1 et lrsquoobjet correspondant agrave PS-ISE est $psISE

41 Installation du PS Community ExtensionUne librairie suppleacutementaire peut ecirctre installeacutee en plus de PowerShell elle est disponible agrave cette adresse httppscxcodeplexcom Elle nest pas neacutecessaire pour utiliser PS mais elle permet dajouter des fonctionnaliteacutes assez puissantes Par exemple elle installe la possibiliteacute de lancer PS nimporte ougrave dans un explorateur Windows (laquo Open PowerShell here raquo) avec une instance de PowerShell ayant un reacutepertoire de travail correspondant au reacutepertoire seacutelectionneacute Par ailleurs il y a des fonctions qui traitent du presse-papier (Get-Clipboard amp Out-Clipboard) ou encore lrsquoenvoi drsquoe-mails (Send-SmtpMail) Il est eacutegalement possible de jouer avec des outils de synthegravese vocale via Out-SpeechLe seul inconveacutenient agrave lrsquoinstallation de cette librairie est la lenteur au deacutemarrage de PS

42 Ougrave sauvegarder mes scriptsVous venez drsquoeacutecrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez freacutequemment Reste agrave savoir ougrave il faut les stocker Il existe plusieurs faccedilons de sauvegarder des scripts en PS

La plus simple consiste agrave modifier votre profil et stocker les scripts agrave cet endroit Toutefois vous preacutefeacuterez peut ecirctre avoir des fichiers seacutepareacutes pour vos scripts Pour cela il est possible drsquoajouter les noms de fichiers au profile pour qursquoils soient teacuteleacutechargeacutes et accessibles Il suffit drsquoajouter la ligne suivante agrave votre profil

cfoobarmyfunctionsps1Exercice 12 Une autre option consiste agrave creacuteer un disque speacutecifique connu uniquement de PS pour toutes vos

fonctions ou scripts Eacutecrivez la commande qui permet de le faire en utilisant new-Psdrive Eacutevitez toutes interactions avec lrsquoutilisateur toutes les informations doivent se trouver dans la commande Vous pourrez exeacutecuter vos scripts en tapant scriptsmyscriptps1 si le disque creacuteeacute srsquoappelle scripts Testez la creacuteation de ce disque en creacuteant un script qui affiche les processus courants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 8

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse
Page 2: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

bull Conception coheacuterente Dans la mesure ougrave les magasins de donneacutees systegraveme et les cmdlets Windows PowerShell utilisent une syntaxe et des conventions drsquoaffectation de noms communes les donneacutees peuvent ecirctre partageacutees facilement en outre la sortie drsquoune cmdlet peut servir drsquoentreacutee pour une autre cmdlet sans nouvelle mise en forme ou manipulation

bull Navigation simplifieacutee au sein du systegraveme drsquoexploitation agrave lrsquoaide de commandes ce qui permet aux utilisateurs de naviguer dans le Registre et drsquoautres magasins de donneacutees de la mecircme faccedilon que dans le systegraveme de fichiers

bull Puissantes fonctionnaliteacutes de manipulation drsquoobjets Les objets peuvent ecirctre manipuleacutes directement ou envoyeacutes vers drsquoautres outils ou bases de donneacutees

bull Interface extensible Les eacutediteurs de logiciels indeacutependants et les deacuteveloppeurs professionnels peuvent creacuteer des outils et utilitaires personnaliseacutes afin drsquoadministrer leurs logiciels

2 Installation Lancement de PowerShellPour exeacutecuter PowerShell tout deacutepend de la version de Windows sur laquelle vous travaillez Si vous utilisez Windows7 ou Windows Server 2008 R2 vous nrsquoavez rien agrave faire crsquoest preacute-installer Pour des versions anteacuterieures vous devez le teacuteleacutecharger et lrsquoinstaller Pour plus de deacutetails rendez vous sur la page officielle de Microsoft httpmicrosoftcompowershell Cette page contient les liens pour les installateurs approprieacutes ainsi que de la documentation et autres documents inteacuteressants Powershell est deacutejagrave installeacute sur les machines de lIUT

PowerShell se preacutesente sous deux formes

bull La console PowerShell (PS) qui interpregravete les commandes en ligne (Figure 1 agrave gauche)bull Un environnement graphique de deacuteveloppement de scripts ndash PowerShell Integrated Scripting

Environment (PS-ISE) (Figure 1 agrave droite)

Figure 1 Interfaces de PowerShell

Pour lancer PS aller dans le menu Deacutemarrer gt Tous les Programmes gt Accessoires gt Windows PowerShell et choisissez lrsquointerface souhaiteacutee Vous pouvez eacutegalement choisir entre une version 32 bits (x86) ou 64 bits Il est eacutegalement possible de lancer PS avec linterpreacuteteur classique de commandes de Windows (cmdexe) avec la commande powershell

Pour ceux qui ne connaicirctraient pas la notion de ligne de commande visitez les pages suivantes httpfrwikipediaorgwikiInterprC3A9teur_de_commandes et httpfrwikipediaorgwikiCmdexe

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 2

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 1 Exeacutecutez la commande dir dans un environnement PowerShell et dans linterpreacuteteur de commandes classique de Windows (cmdexe) Quelles sont les diffeacuterences

Lrsquoutilisation de lrsquoenvironnement de deacuteveloppement de scripts (PS-ISE) permet drsquoavoir plusieurs sessions simultaneacutement ainsi que la possibiliteacute de deacuteboguer

Exercice 2 Dans linterpreacuteteur de commandes Windows (cmdexe) afficher lrsquoaide (help) de la commande Powershell Comment peut-on exeacutecuter la commande Get-ChildItem de PowerShell tout en restant en ligne de commande Windows mais en minimisant la fenecirctre courante Que fait linstruction Get-ChildItem

3 Les commandlets de baseComme vous venez de lrsquoapercevoir preacuteceacutedemment Windows PS introduit des commandes un peu speacuteciales appeleacutees cmdlet (prononcer laquo command-let raquo) Une cmdlet est la plus petite uniteacute rendant une fonctionnaliteacute Plutocirct que decirctre tregraves complexe le plupart des cmdlets sont simples et possegravedent peu de proprieacuteteacutes associeacutees Une cmdlet sutilise de la mecircme faccedilon quune commande classique Elle nrsquoest pas sensitive agrave la casse Elles respectent un format bien preacutecis ltverbegt-ltactiongt Le verbe preacutecise ce que fait la cmdlet en geacuteneacuteral alors que le nom preacutecise sur quoi la cmdlet va agir Par exemple la cmdlet Get-Variable va reacutecupeacuterer une variable de PS et retourner sa valeur En PS v30 il existe 303 cmdlets diffeacuterentes

Exercice 3 Testez la cmdlet Get-Variable sans preacuteciser de variable preacutecise Quel est le reacutesultat Quelle est la valeur de PSHOME

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 3

DenisPallezunicefr 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 SignificationAdd Ajoute une instance dun itemClear Supprime le contenu dun item comme la valeur dune variableConvertFrom ConvertTo

Convertie un item dun format agrave un autre comme une liste de valeurs seacutepareacutees par des virgules en des proprieacuteteacutes dun objet

Disable Enable Annule Autorise un certain parameacutetrage comme une connexion agrave distanceExport Import Exporte Importe les proprieacuteteacutes drsquoun item dans un format particulier comme exporter les

proprieacuteteacutes de la console en XMLGet Interroge un objet comme obtenir la liste des processusInvoke Exeacutecute une instance drsquoun item comme une expressionNew Remove Creacutee Supprime une nouvelle instance drsquoun item comme une nouvelle variable ou eacuteveacutenementSet Modifie les paramegravetres drsquoun objetStart Stop Deacutemarre Arrecircte une instance drsquoun item comme un service ou un processusTest Test une instance drsquoun item pour une valeur speacutecifique comme tester une connexion pour savoir si

elle est valideWrite Exeacutecute une opeacuteration drsquoeacutecriture drsquoune instance drsquoun objet comme eacutecrire un eacuteveacutenement sur le

gestionnaire de log drsquoeacuteveacutenements

Afin drsquoavoir une ideacutee plus preacutecise de lrsquoutiliteacute des preacuteceacutedentes cmdlet vous trouverez ci-dessous un tableau reacutesumant les cmdlet souvent utiliseacutes agrave des fins drsquoadministration

Verbe de la cmdlet SignificationAdd-Computer Remove-Computer Ajoute ou supprime lrsquoappartenance drsquoun ordinateur dans un domaine ou groupe

de travailCheckpoint-Computer Restore-Computer

Creacuteeacute un point de restauration du systegraveme pour un ordinateur restaure lrsquoordinateur

Compare-Object Group-Object Sort-Object Select-Object New-Object

Comparaison groupement trie seacutelection creacuteation drsquoobjets

ConvertFrom-SecureString ConvertTo-SecureString

Creacuteation export de chaine seacutecuriseacutees

Debug-Process Deacuteboguer un processus srsquoexeacutecutant sur un ordinateurGet-Alias New-Alias Set-Alias Export-Alias Import-Alias

Reacutecupeacuterer creacuteer parameacutetrer exporter importer des alias

Get-AuthenticodeSignature Set-AuthenticodeSignature

Reacutecupeacuterer parameacutetrer la signature drsquoun objet associeacute agrave un fichier

Get-Command Invoke-Command Measure-Command Trace-Command

Reacutecupeacuterer des informations sur invoquer mesurer le temps drsquoexeacutecution tracer des cmdlets

Get-EventLog Write-EventLog Clear-EventLog

Reacutecupeacuterer eacutecrire effacer des eacuteveacutenements de log

Get-ExecutionPolicy Set-ExecutionPolicy

Traite de la politique drsquoexeacutecution du shell courant

Get-Help Devinez hellip Get-Host Reacutecupegravere des informations de lrsquoapplication hocircte de PSGet_HotFix Reacutecupegravere les modifications apporteacutees agrave un ordinateurGet-Location Set-Location Affiche ou seacutelectionne le reacutepertoire courantGet-Process Start-Process Stop-Process

Reacutecupegravere Deacutemarre Arrecircte un processus sur une machine

Get-PSDrive New-PSDrive Remove-PSDrive

Reacutecupegravere Creacutee Supprime un disque speacutecifique PowerShell

Get-Service New-Service Set-Service Reacutecupegravere Creacutee Deacutefinit un service Get-Variable New-Variable Set-VariableRemove-Variable Clear-Variable

Cmdlets pour la gestion des variables

Import-Counter Export-Counter Importe Exporte les donneacutees de compteur de performance

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 4

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Read-Host Write-Host Clear-Host Lecture dans Ecriture dans Efface la fenecirctre hocircteRename-Computer Stop-ComputerRestart-Computer

Renomme Arrecircte Redeacutemarre un ordinateur

Reset-ComputerMachinePassword Reacuteinitialise le mot de passe du compte de lordinateur

Exercice 4 Affichez lrsquoaide disponible pour la cmdlet remove-item Ensuite faites de mecircme en incluant les exemples Vous pouvez demander de lrsquoaide sur lrsquoaide Testez eacutegalement la commande help Quelles diffeacuterences observez-vous

Si vous cherchez de lrsquoaide pas forceacutement sur une instruction mais plutocirct sur une instruction basique ou sur des concepts de base utilisez lrsquoinstruction Get-Help about ou help about

Exercice 5 Quelles sont les cmdlets PS pour exeacutecuter ces tacircches (1) copier (2) deacuteplacer un fichier dans un reacutepertoire diffeacuterent du reacutepertoire courant (3) changer de reacutepertoire (4) renommer un fichier (5) creacuteer supprimer (6) un reacutepertoire (7) supprimer un fichier (8) afficher le contenu drsquoun fichier

La commande Get-Help donne de lrsquoaide sur des choses pour lesquelles des fichiers drsquoaide sont disponibles dans PS La commande Get-Command est compleacutementaire agrave Get-Help puisqursquoelle donne de lrsquoaide sur des choses qui peuvent ecirctre exeacutecuteacutees comme les cmdlets les fonctions les scripts et mecircme des fichiers Windows Il est eacutegalement possible dafficher laide dune seule commande disponible chez Microsoft en utilisant loption -online

Exercice 6 Exeacutecutez la cmdlet Get-Command ipconfigexe | Format-List

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 5

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 7 Il est eacutegalement possible drsquoutiliser Get-Command pour deacutecouvrir les commandes possibles sur un thegraveme particulier Par exemple vous ne vous souvenez plus des commandes lieacutees aux processus Saisissez la cmdlet Get-Command process En utilisant laide afficher que les fonctions

Exercice 8 Reacutecupeacuterez la version de PS qui srsquoexeacutecute sur votre machine Reacutecupeacuterer uniquement la valeur et pas toutes les informations (pour cela utilisez lrsquoaide) Crsquoest un premier aperccedilu de la notion drsquoobjets

31 Les aliasIl est possible drsquoassocier un laquo surnom raquo agrave une commande Cela peut se faire agrave lrsquoaide de la cmdlet Set-Alias

Exercice 9 Agrave quoi correspond lrsquoalias gal et essayer de trouver lrsquoalias de Get-Content Est-il possible drsquoavoir plusieurs alias pour la mecircme commande

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 6

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

4 Configuration et Personnalisation de PowerShellPar deacutefaut la console PS srsquoexeacutecute 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 $HostUIRawUIBackgroundColor=rdquomagentardquo Saisissez ensuite lrsquoinstruction clear Il est conseilleacute drsquoutiliser la touche ltTABULATIONgt pour faire appel agrave la compleacutetion et ainsi eacuteviter de saisir un mot au complet ou encore de connaitre les diffeacuterentes possibiliteacutes Modifiez la couleur du texte en jaune en utilisant la proprieacuteteacute ForegroundColor$Host est une variable speacuteciale qui reacutefeacuterence un objet repreacutesentant la console courante

Exercice 10 La couleur vous parait horrible Crsquoest normal pour moi aussi Fermez la console et relancer PS Que constatez-vous

Comme vous ne souhaitez pas personnaliser votre console agrave chaque fois que vous en ouvrez une il est possible de la personnaliser par deacutefaut en modifiant votre profile Les informations sur votre profile peuvent ecirctre contenues dans quatre fichiers diffeacuterents Pourquoi autant Les informations de configuration peuvent ecirctre appliqueacutees pour tous les utilisateurs ou pour un seul Vous pouvez exeacutecuter PS en ligne de commande ou via un outil tiers Les 4 fichiers correspondent aux diffeacuterentes combinaisons possibles

Exercice 11 Tapez la commande $profile pour savoir ougrave se trouve votre profile Par deacutefaut votre profile PS se trouve dans le fichier nommeacute MicrosoftPowerShell_profileps1 dans le reacutepertoire WindowsPowerShell de votre reacutepertoire MesDocuments Il se peut que ce fichier nrsquoexiste pas encore et dans ce cas PS prend des valeurs par deacutefaut Creacuteez ce fichier (mecircme vide) dans le bon reacutepertoire Modifiez ce fichier avec la ligne suivante $HostUIRawUIWindowTitle=rdquoMon Windows PowerShell Personaliseacuterdquo Relancer PS

Malheureusement PowerShell srsquoexeacutecute mais avec une erreur et lrsquoeacutecran suivant srsquoaffiche

Ceci est normal par deacutefaut PS ne vous laissera pas exeacutecuter de scripts (y compris votre profile) tant qursquoil nrsquoaura pas eacuteteacute signeacute par un certificat pour des raisons de seacutecuriteacute Ceci fera lrsquoobjet drsquoun travail ulteacuterieur mais pour

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 7

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

lrsquoinstant pour voir si votre profil fonctionne il faut changer le comportement par deacutefaut de PS en lui donnant la possibiliteacute drsquoexeacutecuter des scripts locaux avec la commande suivante Set-ExecutionPolicy RemoteSigned En acceptant la modification de la strateacutegie drsquoexeacutecution il se peut que vous ayez une autre erreur qui vous preacutecise que vous nrsquoavez pas accegraves agrave la base de registre Pour reacutesoudre ce problegraveme vous devez relancer PS en tant qursquoadministrateur (clic-droit sur le programme Windows PowerShell et choisir lrsquooption Exeacutecuter en tant qursquoadministrateur) Si vous souhaitez revenir comme avant utiliser la valeur Restricted agrave la place de RemoteSigned

Vous pouvez eacutegalement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui autorisera PS agrave se plaindre quand vous utiliserez une variable qui nrsquoa pas eacuteteacute initialiseacutee Ensuite saisissez la commande $ErrorActionPreference = stop qui autorisera PS agrave srsquoarrecircter deacutes qursquoun script contiendra une erreur Pendant la saisie drsquoune commande pensez agrave utiliser la touche ltTABgt pour utiliser la compleacutetion

Pour information PS-ISE possegravede eacutegalement un profile contenu dans le script MicrosoftPowerShellISE_profileps1 et lrsquoobjet correspondant agrave PS-ISE est $psISE

41 Installation du PS Community ExtensionUne librairie suppleacutementaire peut ecirctre installeacutee en plus de PowerShell elle est disponible agrave cette adresse httppscxcodeplexcom Elle nest pas neacutecessaire pour utiliser PS mais elle permet dajouter des fonctionnaliteacutes assez puissantes Par exemple elle installe la possibiliteacute de lancer PS nimporte ougrave dans un explorateur Windows (laquo Open PowerShell here raquo) avec une instance de PowerShell ayant un reacutepertoire de travail correspondant au reacutepertoire seacutelectionneacute Par ailleurs il y a des fonctions qui traitent du presse-papier (Get-Clipboard amp Out-Clipboard) ou encore lrsquoenvoi drsquoe-mails (Send-SmtpMail) Il est eacutegalement possible de jouer avec des outils de synthegravese vocale via Out-SpeechLe seul inconveacutenient agrave lrsquoinstallation de cette librairie est la lenteur au deacutemarrage de PS

42 Ougrave sauvegarder mes scriptsVous venez drsquoeacutecrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez freacutequemment Reste agrave savoir ougrave il faut les stocker Il existe plusieurs faccedilons de sauvegarder des scripts en PS

La plus simple consiste agrave modifier votre profil et stocker les scripts agrave cet endroit Toutefois vous preacutefeacuterez peut ecirctre avoir des fichiers seacutepareacutes pour vos scripts Pour cela il est possible drsquoajouter les noms de fichiers au profile pour qursquoils soient teacuteleacutechargeacutes et accessibles Il suffit drsquoajouter la ligne suivante agrave votre profil

cfoobarmyfunctionsps1Exercice 12 Une autre option consiste agrave creacuteer un disque speacutecifique connu uniquement de PS pour toutes vos

fonctions ou scripts Eacutecrivez la commande qui permet de le faire en utilisant new-Psdrive Eacutevitez toutes interactions avec lrsquoutilisateur toutes les informations doivent se trouver dans la commande Vous pourrez exeacutecuter vos scripts en tapant scriptsmyscriptps1 si le disque creacuteeacute srsquoappelle scripts Testez la creacuteation de ce disque en creacuteant un script qui affiche les processus courants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 8

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse
Page 3: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 1 Exeacutecutez la commande dir dans un environnement PowerShell et dans linterpreacuteteur de commandes classique de Windows (cmdexe) Quelles sont les diffeacuterences

Lrsquoutilisation de lrsquoenvironnement de deacuteveloppement de scripts (PS-ISE) permet drsquoavoir plusieurs sessions simultaneacutement ainsi que la possibiliteacute de deacuteboguer

Exercice 2 Dans linterpreacuteteur de commandes Windows (cmdexe) afficher lrsquoaide (help) de la commande Powershell Comment peut-on exeacutecuter la commande Get-ChildItem de PowerShell tout en restant en ligne de commande Windows mais en minimisant la fenecirctre courante Que fait linstruction Get-ChildItem

3 Les commandlets de baseComme vous venez de lrsquoapercevoir preacuteceacutedemment Windows PS introduit des commandes un peu speacuteciales appeleacutees cmdlet (prononcer laquo command-let raquo) Une cmdlet est la plus petite uniteacute rendant une fonctionnaliteacute Plutocirct que decirctre tregraves complexe le plupart des cmdlets sont simples et possegravedent peu de proprieacuteteacutes associeacutees Une cmdlet sutilise de la mecircme faccedilon quune commande classique Elle nrsquoest pas sensitive agrave la casse Elles respectent un format bien preacutecis ltverbegt-ltactiongt Le verbe preacutecise ce que fait la cmdlet en geacuteneacuteral alors que le nom preacutecise sur quoi la cmdlet va agir Par exemple la cmdlet Get-Variable va reacutecupeacuterer une variable de PS et retourner sa valeur En PS v30 il existe 303 cmdlets diffeacuterentes

Exercice 3 Testez la cmdlet Get-Variable sans preacuteciser de variable preacutecise Quel est le reacutesultat Quelle est la valeur de PSHOME

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 3

DenisPallezunicefr 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 SignificationAdd Ajoute une instance dun itemClear Supprime le contenu dun item comme la valeur dune variableConvertFrom ConvertTo

Convertie un item dun format agrave un autre comme une liste de valeurs seacutepareacutees par des virgules en des proprieacuteteacutes dun objet

Disable Enable Annule Autorise un certain parameacutetrage comme une connexion agrave distanceExport Import Exporte Importe les proprieacuteteacutes drsquoun item dans un format particulier comme exporter les

proprieacuteteacutes de la console en XMLGet Interroge un objet comme obtenir la liste des processusInvoke Exeacutecute une instance drsquoun item comme une expressionNew Remove Creacutee Supprime une nouvelle instance drsquoun item comme une nouvelle variable ou eacuteveacutenementSet Modifie les paramegravetres drsquoun objetStart Stop Deacutemarre Arrecircte une instance drsquoun item comme un service ou un processusTest Test une instance drsquoun item pour une valeur speacutecifique comme tester une connexion pour savoir si

elle est valideWrite Exeacutecute une opeacuteration drsquoeacutecriture drsquoune instance drsquoun objet comme eacutecrire un eacuteveacutenement sur le

gestionnaire de log drsquoeacuteveacutenements

Afin drsquoavoir une ideacutee plus preacutecise de lrsquoutiliteacute des preacuteceacutedentes cmdlet vous trouverez ci-dessous un tableau reacutesumant les cmdlet souvent utiliseacutes agrave des fins drsquoadministration

Verbe de la cmdlet SignificationAdd-Computer Remove-Computer Ajoute ou supprime lrsquoappartenance drsquoun ordinateur dans un domaine ou groupe

de travailCheckpoint-Computer Restore-Computer

Creacuteeacute un point de restauration du systegraveme pour un ordinateur restaure lrsquoordinateur

Compare-Object Group-Object Sort-Object Select-Object New-Object

Comparaison groupement trie seacutelection creacuteation drsquoobjets

ConvertFrom-SecureString ConvertTo-SecureString

Creacuteation export de chaine seacutecuriseacutees

Debug-Process Deacuteboguer un processus srsquoexeacutecutant sur un ordinateurGet-Alias New-Alias Set-Alias Export-Alias Import-Alias

Reacutecupeacuterer creacuteer parameacutetrer exporter importer des alias

Get-AuthenticodeSignature Set-AuthenticodeSignature

Reacutecupeacuterer parameacutetrer la signature drsquoun objet associeacute agrave un fichier

Get-Command Invoke-Command Measure-Command Trace-Command

Reacutecupeacuterer des informations sur invoquer mesurer le temps drsquoexeacutecution tracer des cmdlets

Get-EventLog Write-EventLog Clear-EventLog

Reacutecupeacuterer eacutecrire effacer des eacuteveacutenements de log

Get-ExecutionPolicy Set-ExecutionPolicy

Traite de la politique drsquoexeacutecution du shell courant

Get-Help Devinez hellip Get-Host Reacutecupegravere des informations de lrsquoapplication hocircte de PSGet_HotFix Reacutecupegravere les modifications apporteacutees agrave un ordinateurGet-Location Set-Location Affiche ou seacutelectionne le reacutepertoire courantGet-Process Start-Process Stop-Process

Reacutecupegravere Deacutemarre Arrecircte un processus sur une machine

Get-PSDrive New-PSDrive Remove-PSDrive

Reacutecupegravere Creacutee Supprime un disque speacutecifique PowerShell

Get-Service New-Service Set-Service Reacutecupegravere Creacutee Deacutefinit un service Get-Variable New-Variable Set-VariableRemove-Variable Clear-Variable

Cmdlets pour la gestion des variables

Import-Counter Export-Counter Importe Exporte les donneacutees de compteur de performance

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 4

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Read-Host Write-Host Clear-Host Lecture dans Ecriture dans Efface la fenecirctre hocircteRename-Computer Stop-ComputerRestart-Computer

Renomme Arrecircte Redeacutemarre un ordinateur

Reset-ComputerMachinePassword Reacuteinitialise le mot de passe du compte de lordinateur

Exercice 4 Affichez lrsquoaide disponible pour la cmdlet remove-item Ensuite faites de mecircme en incluant les exemples Vous pouvez demander de lrsquoaide sur lrsquoaide Testez eacutegalement la commande help Quelles diffeacuterences observez-vous

Si vous cherchez de lrsquoaide pas forceacutement sur une instruction mais plutocirct sur une instruction basique ou sur des concepts de base utilisez lrsquoinstruction Get-Help about ou help about

Exercice 5 Quelles sont les cmdlets PS pour exeacutecuter ces tacircches (1) copier (2) deacuteplacer un fichier dans un reacutepertoire diffeacuterent du reacutepertoire courant (3) changer de reacutepertoire (4) renommer un fichier (5) creacuteer supprimer (6) un reacutepertoire (7) supprimer un fichier (8) afficher le contenu drsquoun fichier

La commande Get-Help donne de lrsquoaide sur des choses pour lesquelles des fichiers drsquoaide sont disponibles dans PS La commande Get-Command est compleacutementaire agrave Get-Help puisqursquoelle donne de lrsquoaide sur des choses qui peuvent ecirctre exeacutecuteacutees comme les cmdlets les fonctions les scripts et mecircme des fichiers Windows Il est eacutegalement possible dafficher laide dune seule commande disponible chez Microsoft en utilisant loption -online

Exercice 6 Exeacutecutez la cmdlet Get-Command ipconfigexe | Format-List

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 5

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 7 Il est eacutegalement possible drsquoutiliser Get-Command pour deacutecouvrir les commandes possibles sur un thegraveme particulier Par exemple vous ne vous souvenez plus des commandes lieacutees aux processus Saisissez la cmdlet Get-Command process En utilisant laide afficher que les fonctions

Exercice 8 Reacutecupeacuterez la version de PS qui srsquoexeacutecute sur votre machine Reacutecupeacuterer uniquement la valeur et pas toutes les informations (pour cela utilisez lrsquoaide) Crsquoest un premier aperccedilu de la notion drsquoobjets

31 Les aliasIl est possible drsquoassocier un laquo surnom raquo agrave une commande Cela peut se faire agrave lrsquoaide de la cmdlet Set-Alias

Exercice 9 Agrave quoi correspond lrsquoalias gal et essayer de trouver lrsquoalias de Get-Content Est-il possible drsquoavoir plusieurs alias pour la mecircme commande

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 6

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

4 Configuration et Personnalisation de PowerShellPar deacutefaut la console PS srsquoexeacutecute 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 $HostUIRawUIBackgroundColor=rdquomagentardquo Saisissez ensuite lrsquoinstruction clear Il est conseilleacute drsquoutiliser la touche ltTABULATIONgt pour faire appel agrave la compleacutetion et ainsi eacuteviter de saisir un mot au complet ou encore de connaitre les diffeacuterentes possibiliteacutes Modifiez la couleur du texte en jaune en utilisant la proprieacuteteacute ForegroundColor$Host est une variable speacuteciale qui reacutefeacuterence un objet repreacutesentant la console courante

Exercice 10 La couleur vous parait horrible Crsquoest normal pour moi aussi Fermez la console et relancer PS Que constatez-vous

Comme vous ne souhaitez pas personnaliser votre console agrave chaque fois que vous en ouvrez une il est possible de la personnaliser par deacutefaut en modifiant votre profile Les informations sur votre profile peuvent ecirctre contenues dans quatre fichiers diffeacuterents Pourquoi autant Les informations de configuration peuvent ecirctre appliqueacutees pour tous les utilisateurs ou pour un seul Vous pouvez exeacutecuter PS en ligne de commande ou via un outil tiers Les 4 fichiers correspondent aux diffeacuterentes combinaisons possibles

Exercice 11 Tapez la commande $profile pour savoir ougrave se trouve votre profile Par deacutefaut votre profile PS se trouve dans le fichier nommeacute MicrosoftPowerShell_profileps1 dans le reacutepertoire WindowsPowerShell de votre reacutepertoire MesDocuments Il se peut que ce fichier nrsquoexiste pas encore et dans ce cas PS prend des valeurs par deacutefaut Creacuteez ce fichier (mecircme vide) dans le bon reacutepertoire Modifiez ce fichier avec la ligne suivante $HostUIRawUIWindowTitle=rdquoMon Windows PowerShell Personaliseacuterdquo Relancer PS

Malheureusement PowerShell srsquoexeacutecute mais avec une erreur et lrsquoeacutecran suivant srsquoaffiche

Ceci est normal par deacutefaut PS ne vous laissera pas exeacutecuter de scripts (y compris votre profile) tant qursquoil nrsquoaura pas eacuteteacute signeacute par un certificat pour des raisons de seacutecuriteacute Ceci fera lrsquoobjet drsquoun travail ulteacuterieur mais pour

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 7

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

lrsquoinstant pour voir si votre profil fonctionne il faut changer le comportement par deacutefaut de PS en lui donnant la possibiliteacute drsquoexeacutecuter des scripts locaux avec la commande suivante Set-ExecutionPolicy RemoteSigned En acceptant la modification de la strateacutegie drsquoexeacutecution il se peut que vous ayez une autre erreur qui vous preacutecise que vous nrsquoavez pas accegraves agrave la base de registre Pour reacutesoudre ce problegraveme vous devez relancer PS en tant qursquoadministrateur (clic-droit sur le programme Windows PowerShell et choisir lrsquooption Exeacutecuter en tant qursquoadministrateur) Si vous souhaitez revenir comme avant utiliser la valeur Restricted agrave la place de RemoteSigned

Vous pouvez eacutegalement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui autorisera PS agrave se plaindre quand vous utiliserez une variable qui nrsquoa pas eacuteteacute initialiseacutee Ensuite saisissez la commande $ErrorActionPreference = stop qui autorisera PS agrave srsquoarrecircter deacutes qursquoun script contiendra une erreur Pendant la saisie drsquoune commande pensez agrave utiliser la touche ltTABgt pour utiliser la compleacutetion

Pour information PS-ISE possegravede eacutegalement un profile contenu dans le script MicrosoftPowerShellISE_profileps1 et lrsquoobjet correspondant agrave PS-ISE est $psISE

41 Installation du PS Community ExtensionUne librairie suppleacutementaire peut ecirctre installeacutee en plus de PowerShell elle est disponible agrave cette adresse httppscxcodeplexcom Elle nest pas neacutecessaire pour utiliser PS mais elle permet dajouter des fonctionnaliteacutes assez puissantes Par exemple elle installe la possibiliteacute de lancer PS nimporte ougrave dans un explorateur Windows (laquo Open PowerShell here raquo) avec une instance de PowerShell ayant un reacutepertoire de travail correspondant au reacutepertoire seacutelectionneacute Par ailleurs il y a des fonctions qui traitent du presse-papier (Get-Clipboard amp Out-Clipboard) ou encore lrsquoenvoi drsquoe-mails (Send-SmtpMail) Il est eacutegalement possible de jouer avec des outils de synthegravese vocale via Out-SpeechLe seul inconveacutenient agrave lrsquoinstallation de cette librairie est la lenteur au deacutemarrage de PS

42 Ougrave sauvegarder mes scriptsVous venez drsquoeacutecrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez freacutequemment Reste agrave savoir ougrave il faut les stocker Il existe plusieurs faccedilons de sauvegarder des scripts en PS

La plus simple consiste agrave modifier votre profil et stocker les scripts agrave cet endroit Toutefois vous preacutefeacuterez peut ecirctre avoir des fichiers seacutepareacutes pour vos scripts Pour cela il est possible drsquoajouter les noms de fichiers au profile pour qursquoils soient teacuteleacutechargeacutes et accessibles Il suffit drsquoajouter la ligne suivante agrave votre profil

cfoobarmyfunctionsps1Exercice 12 Une autre option consiste agrave creacuteer un disque speacutecifique connu uniquement de PS pour toutes vos

fonctions ou scripts Eacutecrivez la commande qui permet de le faire en utilisant new-Psdrive Eacutevitez toutes interactions avec lrsquoutilisateur toutes les informations doivent se trouver dans la commande Vous pourrez exeacutecuter vos scripts en tapant scriptsmyscriptps1 si le disque creacuteeacute srsquoappelle scripts Testez la creacuteation de ce disque en creacuteant un script qui affiche les processus courants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 8

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse
Page 4: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr 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 SignificationAdd Ajoute une instance dun itemClear Supprime le contenu dun item comme la valeur dune variableConvertFrom ConvertTo

Convertie un item dun format agrave un autre comme une liste de valeurs seacutepareacutees par des virgules en des proprieacuteteacutes dun objet

Disable Enable Annule Autorise un certain parameacutetrage comme une connexion agrave distanceExport Import Exporte Importe les proprieacuteteacutes drsquoun item dans un format particulier comme exporter les

proprieacuteteacutes de la console en XMLGet Interroge un objet comme obtenir la liste des processusInvoke Exeacutecute une instance drsquoun item comme une expressionNew Remove Creacutee Supprime une nouvelle instance drsquoun item comme une nouvelle variable ou eacuteveacutenementSet Modifie les paramegravetres drsquoun objetStart Stop Deacutemarre Arrecircte une instance drsquoun item comme un service ou un processusTest Test une instance drsquoun item pour une valeur speacutecifique comme tester une connexion pour savoir si

elle est valideWrite Exeacutecute une opeacuteration drsquoeacutecriture drsquoune instance drsquoun objet comme eacutecrire un eacuteveacutenement sur le

gestionnaire de log drsquoeacuteveacutenements

Afin drsquoavoir une ideacutee plus preacutecise de lrsquoutiliteacute des preacuteceacutedentes cmdlet vous trouverez ci-dessous un tableau reacutesumant les cmdlet souvent utiliseacutes agrave des fins drsquoadministration

Verbe de la cmdlet SignificationAdd-Computer Remove-Computer Ajoute ou supprime lrsquoappartenance drsquoun ordinateur dans un domaine ou groupe

de travailCheckpoint-Computer Restore-Computer

Creacuteeacute un point de restauration du systegraveme pour un ordinateur restaure lrsquoordinateur

Compare-Object Group-Object Sort-Object Select-Object New-Object

Comparaison groupement trie seacutelection creacuteation drsquoobjets

ConvertFrom-SecureString ConvertTo-SecureString

Creacuteation export de chaine seacutecuriseacutees

Debug-Process Deacuteboguer un processus srsquoexeacutecutant sur un ordinateurGet-Alias New-Alias Set-Alias Export-Alias Import-Alias

Reacutecupeacuterer creacuteer parameacutetrer exporter importer des alias

Get-AuthenticodeSignature Set-AuthenticodeSignature

Reacutecupeacuterer parameacutetrer la signature drsquoun objet associeacute agrave un fichier

Get-Command Invoke-Command Measure-Command Trace-Command

Reacutecupeacuterer des informations sur invoquer mesurer le temps drsquoexeacutecution tracer des cmdlets

Get-EventLog Write-EventLog Clear-EventLog

Reacutecupeacuterer eacutecrire effacer des eacuteveacutenements de log

Get-ExecutionPolicy Set-ExecutionPolicy

Traite de la politique drsquoexeacutecution du shell courant

Get-Help Devinez hellip Get-Host Reacutecupegravere des informations de lrsquoapplication hocircte de PSGet_HotFix Reacutecupegravere les modifications apporteacutees agrave un ordinateurGet-Location Set-Location Affiche ou seacutelectionne le reacutepertoire courantGet-Process Start-Process Stop-Process

Reacutecupegravere Deacutemarre Arrecircte un processus sur une machine

Get-PSDrive New-PSDrive Remove-PSDrive

Reacutecupegravere Creacutee Supprime un disque speacutecifique PowerShell

Get-Service New-Service Set-Service Reacutecupegravere Creacutee Deacutefinit un service Get-Variable New-Variable Set-VariableRemove-Variable Clear-Variable

Cmdlets pour la gestion des variables

Import-Counter Export-Counter Importe Exporte les donneacutees de compteur de performance

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 4

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Read-Host Write-Host Clear-Host Lecture dans Ecriture dans Efface la fenecirctre hocircteRename-Computer Stop-ComputerRestart-Computer

Renomme Arrecircte Redeacutemarre un ordinateur

Reset-ComputerMachinePassword Reacuteinitialise le mot de passe du compte de lordinateur

Exercice 4 Affichez lrsquoaide disponible pour la cmdlet remove-item Ensuite faites de mecircme en incluant les exemples Vous pouvez demander de lrsquoaide sur lrsquoaide Testez eacutegalement la commande help Quelles diffeacuterences observez-vous

Si vous cherchez de lrsquoaide pas forceacutement sur une instruction mais plutocirct sur une instruction basique ou sur des concepts de base utilisez lrsquoinstruction Get-Help about ou help about

Exercice 5 Quelles sont les cmdlets PS pour exeacutecuter ces tacircches (1) copier (2) deacuteplacer un fichier dans un reacutepertoire diffeacuterent du reacutepertoire courant (3) changer de reacutepertoire (4) renommer un fichier (5) creacuteer supprimer (6) un reacutepertoire (7) supprimer un fichier (8) afficher le contenu drsquoun fichier

La commande Get-Help donne de lrsquoaide sur des choses pour lesquelles des fichiers drsquoaide sont disponibles dans PS La commande Get-Command est compleacutementaire agrave Get-Help puisqursquoelle donne de lrsquoaide sur des choses qui peuvent ecirctre exeacutecuteacutees comme les cmdlets les fonctions les scripts et mecircme des fichiers Windows Il est eacutegalement possible dafficher laide dune seule commande disponible chez Microsoft en utilisant loption -online

Exercice 6 Exeacutecutez la cmdlet Get-Command ipconfigexe | Format-List

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 5

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 7 Il est eacutegalement possible drsquoutiliser Get-Command pour deacutecouvrir les commandes possibles sur un thegraveme particulier Par exemple vous ne vous souvenez plus des commandes lieacutees aux processus Saisissez la cmdlet Get-Command process En utilisant laide afficher que les fonctions

Exercice 8 Reacutecupeacuterez la version de PS qui srsquoexeacutecute sur votre machine Reacutecupeacuterer uniquement la valeur et pas toutes les informations (pour cela utilisez lrsquoaide) Crsquoest un premier aperccedilu de la notion drsquoobjets

31 Les aliasIl est possible drsquoassocier un laquo surnom raquo agrave une commande Cela peut se faire agrave lrsquoaide de la cmdlet Set-Alias

Exercice 9 Agrave quoi correspond lrsquoalias gal et essayer de trouver lrsquoalias de Get-Content Est-il possible drsquoavoir plusieurs alias pour la mecircme commande

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 6

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

4 Configuration et Personnalisation de PowerShellPar deacutefaut la console PS srsquoexeacutecute 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 $HostUIRawUIBackgroundColor=rdquomagentardquo Saisissez ensuite lrsquoinstruction clear Il est conseilleacute drsquoutiliser la touche ltTABULATIONgt pour faire appel agrave la compleacutetion et ainsi eacuteviter de saisir un mot au complet ou encore de connaitre les diffeacuterentes possibiliteacutes Modifiez la couleur du texte en jaune en utilisant la proprieacuteteacute ForegroundColor$Host est une variable speacuteciale qui reacutefeacuterence un objet repreacutesentant la console courante

Exercice 10 La couleur vous parait horrible Crsquoest normal pour moi aussi Fermez la console et relancer PS Que constatez-vous

Comme vous ne souhaitez pas personnaliser votre console agrave chaque fois que vous en ouvrez une il est possible de la personnaliser par deacutefaut en modifiant votre profile Les informations sur votre profile peuvent ecirctre contenues dans quatre fichiers diffeacuterents Pourquoi autant Les informations de configuration peuvent ecirctre appliqueacutees pour tous les utilisateurs ou pour un seul Vous pouvez exeacutecuter PS en ligne de commande ou via un outil tiers Les 4 fichiers correspondent aux diffeacuterentes combinaisons possibles

Exercice 11 Tapez la commande $profile pour savoir ougrave se trouve votre profile Par deacutefaut votre profile PS se trouve dans le fichier nommeacute MicrosoftPowerShell_profileps1 dans le reacutepertoire WindowsPowerShell de votre reacutepertoire MesDocuments Il se peut que ce fichier nrsquoexiste pas encore et dans ce cas PS prend des valeurs par deacutefaut Creacuteez ce fichier (mecircme vide) dans le bon reacutepertoire Modifiez ce fichier avec la ligne suivante $HostUIRawUIWindowTitle=rdquoMon Windows PowerShell Personaliseacuterdquo Relancer PS

Malheureusement PowerShell srsquoexeacutecute mais avec une erreur et lrsquoeacutecran suivant srsquoaffiche

Ceci est normal par deacutefaut PS ne vous laissera pas exeacutecuter de scripts (y compris votre profile) tant qursquoil nrsquoaura pas eacuteteacute signeacute par un certificat pour des raisons de seacutecuriteacute Ceci fera lrsquoobjet drsquoun travail ulteacuterieur mais pour

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 7

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

lrsquoinstant pour voir si votre profil fonctionne il faut changer le comportement par deacutefaut de PS en lui donnant la possibiliteacute drsquoexeacutecuter des scripts locaux avec la commande suivante Set-ExecutionPolicy RemoteSigned En acceptant la modification de la strateacutegie drsquoexeacutecution il se peut que vous ayez une autre erreur qui vous preacutecise que vous nrsquoavez pas accegraves agrave la base de registre Pour reacutesoudre ce problegraveme vous devez relancer PS en tant qursquoadministrateur (clic-droit sur le programme Windows PowerShell et choisir lrsquooption Exeacutecuter en tant qursquoadministrateur) Si vous souhaitez revenir comme avant utiliser la valeur Restricted agrave la place de RemoteSigned

Vous pouvez eacutegalement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui autorisera PS agrave se plaindre quand vous utiliserez une variable qui nrsquoa pas eacuteteacute initialiseacutee Ensuite saisissez la commande $ErrorActionPreference = stop qui autorisera PS agrave srsquoarrecircter deacutes qursquoun script contiendra une erreur Pendant la saisie drsquoune commande pensez agrave utiliser la touche ltTABgt pour utiliser la compleacutetion

Pour information PS-ISE possegravede eacutegalement un profile contenu dans le script MicrosoftPowerShellISE_profileps1 et lrsquoobjet correspondant agrave PS-ISE est $psISE

41 Installation du PS Community ExtensionUne librairie suppleacutementaire peut ecirctre installeacutee en plus de PowerShell elle est disponible agrave cette adresse httppscxcodeplexcom Elle nest pas neacutecessaire pour utiliser PS mais elle permet dajouter des fonctionnaliteacutes assez puissantes Par exemple elle installe la possibiliteacute de lancer PS nimporte ougrave dans un explorateur Windows (laquo Open PowerShell here raquo) avec une instance de PowerShell ayant un reacutepertoire de travail correspondant au reacutepertoire seacutelectionneacute Par ailleurs il y a des fonctions qui traitent du presse-papier (Get-Clipboard amp Out-Clipboard) ou encore lrsquoenvoi drsquoe-mails (Send-SmtpMail) Il est eacutegalement possible de jouer avec des outils de synthegravese vocale via Out-SpeechLe seul inconveacutenient agrave lrsquoinstallation de cette librairie est la lenteur au deacutemarrage de PS

42 Ougrave sauvegarder mes scriptsVous venez drsquoeacutecrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez freacutequemment Reste agrave savoir ougrave il faut les stocker Il existe plusieurs faccedilons de sauvegarder des scripts en PS

La plus simple consiste agrave modifier votre profil et stocker les scripts agrave cet endroit Toutefois vous preacutefeacuterez peut ecirctre avoir des fichiers seacutepareacutes pour vos scripts Pour cela il est possible drsquoajouter les noms de fichiers au profile pour qursquoils soient teacuteleacutechargeacutes et accessibles Il suffit drsquoajouter la ligne suivante agrave votre profil

cfoobarmyfunctionsps1Exercice 12 Une autre option consiste agrave creacuteer un disque speacutecifique connu uniquement de PS pour toutes vos

fonctions ou scripts Eacutecrivez la commande qui permet de le faire en utilisant new-Psdrive Eacutevitez toutes interactions avec lrsquoutilisateur toutes les informations doivent se trouver dans la commande Vous pourrez exeacutecuter vos scripts en tapant scriptsmyscriptps1 si le disque creacuteeacute srsquoappelle scripts Testez la creacuteation de ce disque en creacuteant un script qui affiche les processus courants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 8

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse
Page 5: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Read-Host Write-Host Clear-Host Lecture dans Ecriture dans Efface la fenecirctre hocircteRename-Computer Stop-ComputerRestart-Computer

Renomme Arrecircte Redeacutemarre un ordinateur

Reset-ComputerMachinePassword Reacuteinitialise le mot de passe du compte de lordinateur

Exercice 4 Affichez lrsquoaide disponible pour la cmdlet remove-item Ensuite faites de mecircme en incluant les exemples Vous pouvez demander de lrsquoaide sur lrsquoaide Testez eacutegalement la commande help Quelles diffeacuterences observez-vous

Si vous cherchez de lrsquoaide pas forceacutement sur une instruction mais plutocirct sur une instruction basique ou sur des concepts de base utilisez lrsquoinstruction Get-Help about ou help about

Exercice 5 Quelles sont les cmdlets PS pour exeacutecuter ces tacircches (1) copier (2) deacuteplacer un fichier dans un reacutepertoire diffeacuterent du reacutepertoire courant (3) changer de reacutepertoire (4) renommer un fichier (5) creacuteer supprimer (6) un reacutepertoire (7) supprimer un fichier (8) afficher le contenu drsquoun fichier

La commande Get-Help donne de lrsquoaide sur des choses pour lesquelles des fichiers drsquoaide sont disponibles dans PS La commande Get-Command est compleacutementaire agrave Get-Help puisqursquoelle donne de lrsquoaide sur des choses qui peuvent ecirctre exeacutecuteacutees comme les cmdlets les fonctions les scripts et mecircme des fichiers Windows Il est eacutegalement possible dafficher laide dune seule commande disponible chez Microsoft en utilisant loption -online

Exercice 6 Exeacutecutez la cmdlet Get-Command ipconfigexe | Format-List

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 5

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 7 Il est eacutegalement possible drsquoutiliser Get-Command pour deacutecouvrir les commandes possibles sur un thegraveme particulier Par exemple vous ne vous souvenez plus des commandes lieacutees aux processus Saisissez la cmdlet Get-Command process En utilisant laide afficher que les fonctions

Exercice 8 Reacutecupeacuterez la version de PS qui srsquoexeacutecute sur votre machine Reacutecupeacuterer uniquement la valeur et pas toutes les informations (pour cela utilisez lrsquoaide) Crsquoest un premier aperccedilu de la notion drsquoobjets

31 Les aliasIl est possible drsquoassocier un laquo surnom raquo agrave une commande Cela peut se faire agrave lrsquoaide de la cmdlet Set-Alias

Exercice 9 Agrave quoi correspond lrsquoalias gal et essayer de trouver lrsquoalias de Get-Content Est-il possible drsquoavoir plusieurs alias pour la mecircme commande

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 6

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

4 Configuration et Personnalisation de PowerShellPar deacutefaut la console PS srsquoexeacutecute 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 $HostUIRawUIBackgroundColor=rdquomagentardquo Saisissez ensuite lrsquoinstruction clear Il est conseilleacute drsquoutiliser la touche ltTABULATIONgt pour faire appel agrave la compleacutetion et ainsi eacuteviter de saisir un mot au complet ou encore de connaitre les diffeacuterentes possibiliteacutes Modifiez la couleur du texte en jaune en utilisant la proprieacuteteacute ForegroundColor$Host est une variable speacuteciale qui reacutefeacuterence un objet repreacutesentant la console courante

Exercice 10 La couleur vous parait horrible Crsquoest normal pour moi aussi Fermez la console et relancer PS Que constatez-vous

Comme vous ne souhaitez pas personnaliser votre console agrave chaque fois que vous en ouvrez une il est possible de la personnaliser par deacutefaut en modifiant votre profile Les informations sur votre profile peuvent ecirctre contenues dans quatre fichiers diffeacuterents Pourquoi autant Les informations de configuration peuvent ecirctre appliqueacutees pour tous les utilisateurs ou pour un seul Vous pouvez exeacutecuter PS en ligne de commande ou via un outil tiers Les 4 fichiers correspondent aux diffeacuterentes combinaisons possibles

Exercice 11 Tapez la commande $profile pour savoir ougrave se trouve votre profile Par deacutefaut votre profile PS se trouve dans le fichier nommeacute MicrosoftPowerShell_profileps1 dans le reacutepertoire WindowsPowerShell de votre reacutepertoire MesDocuments Il se peut que ce fichier nrsquoexiste pas encore et dans ce cas PS prend des valeurs par deacutefaut Creacuteez ce fichier (mecircme vide) dans le bon reacutepertoire Modifiez ce fichier avec la ligne suivante $HostUIRawUIWindowTitle=rdquoMon Windows PowerShell Personaliseacuterdquo Relancer PS

Malheureusement PowerShell srsquoexeacutecute mais avec une erreur et lrsquoeacutecran suivant srsquoaffiche

Ceci est normal par deacutefaut PS ne vous laissera pas exeacutecuter de scripts (y compris votre profile) tant qursquoil nrsquoaura pas eacuteteacute signeacute par un certificat pour des raisons de seacutecuriteacute Ceci fera lrsquoobjet drsquoun travail ulteacuterieur mais pour

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 7

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

lrsquoinstant pour voir si votre profil fonctionne il faut changer le comportement par deacutefaut de PS en lui donnant la possibiliteacute drsquoexeacutecuter des scripts locaux avec la commande suivante Set-ExecutionPolicy RemoteSigned En acceptant la modification de la strateacutegie drsquoexeacutecution il se peut que vous ayez une autre erreur qui vous preacutecise que vous nrsquoavez pas accegraves agrave la base de registre Pour reacutesoudre ce problegraveme vous devez relancer PS en tant qursquoadministrateur (clic-droit sur le programme Windows PowerShell et choisir lrsquooption Exeacutecuter en tant qursquoadministrateur) Si vous souhaitez revenir comme avant utiliser la valeur Restricted agrave la place de RemoteSigned

Vous pouvez eacutegalement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui autorisera PS agrave se plaindre quand vous utiliserez une variable qui nrsquoa pas eacuteteacute initialiseacutee Ensuite saisissez la commande $ErrorActionPreference = stop qui autorisera PS agrave srsquoarrecircter deacutes qursquoun script contiendra une erreur Pendant la saisie drsquoune commande pensez agrave utiliser la touche ltTABgt pour utiliser la compleacutetion

Pour information PS-ISE possegravede eacutegalement un profile contenu dans le script MicrosoftPowerShellISE_profileps1 et lrsquoobjet correspondant agrave PS-ISE est $psISE

41 Installation du PS Community ExtensionUne librairie suppleacutementaire peut ecirctre installeacutee en plus de PowerShell elle est disponible agrave cette adresse httppscxcodeplexcom Elle nest pas neacutecessaire pour utiliser PS mais elle permet dajouter des fonctionnaliteacutes assez puissantes Par exemple elle installe la possibiliteacute de lancer PS nimporte ougrave dans un explorateur Windows (laquo Open PowerShell here raquo) avec une instance de PowerShell ayant un reacutepertoire de travail correspondant au reacutepertoire seacutelectionneacute Par ailleurs il y a des fonctions qui traitent du presse-papier (Get-Clipboard amp Out-Clipboard) ou encore lrsquoenvoi drsquoe-mails (Send-SmtpMail) Il est eacutegalement possible de jouer avec des outils de synthegravese vocale via Out-SpeechLe seul inconveacutenient agrave lrsquoinstallation de cette librairie est la lenteur au deacutemarrage de PS

42 Ougrave sauvegarder mes scriptsVous venez drsquoeacutecrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez freacutequemment Reste agrave savoir ougrave il faut les stocker Il existe plusieurs faccedilons de sauvegarder des scripts en PS

La plus simple consiste agrave modifier votre profil et stocker les scripts agrave cet endroit Toutefois vous preacutefeacuterez peut ecirctre avoir des fichiers seacutepareacutes pour vos scripts Pour cela il est possible drsquoajouter les noms de fichiers au profile pour qursquoils soient teacuteleacutechargeacutes et accessibles Il suffit drsquoajouter la ligne suivante agrave votre profil

cfoobarmyfunctionsps1Exercice 12 Une autre option consiste agrave creacuteer un disque speacutecifique connu uniquement de PS pour toutes vos

fonctions ou scripts Eacutecrivez la commande qui permet de le faire en utilisant new-Psdrive Eacutevitez toutes interactions avec lrsquoutilisateur toutes les informations doivent se trouver dans la commande Vous pourrez exeacutecuter vos scripts en tapant scriptsmyscriptps1 si le disque creacuteeacute srsquoappelle scripts Testez la creacuteation de ce disque en creacuteant un script qui affiche les processus courants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 8

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse
Page 6: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 7 Il est eacutegalement possible drsquoutiliser Get-Command pour deacutecouvrir les commandes possibles sur un thegraveme particulier Par exemple vous ne vous souvenez plus des commandes lieacutees aux processus Saisissez la cmdlet Get-Command process En utilisant laide afficher que les fonctions

Exercice 8 Reacutecupeacuterez la version de PS qui srsquoexeacutecute sur votre machine Reacutecupeacuterer uniquement la valeur et pas toutes les informations (pour cela utilisez lrsquoaide) Crsquoest un premier aperccedilu de la notion drsquoobjets

31 Les aliasIl est possible drsquoassocier un laquo surnom raquo agrave une commande Cela peut se faire agrave lrsquoaide de la cmdlet Set-Alias

Exercice 9 Agrave quoi correspond lrsquoalias gal et essayer de trouver lrsquoalias de Get-Content Est-il possible drsquoavoir plusieurs alias pour la mecircme commande

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 6

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

4 Configuration et Personnalisation de PowerShellPar deacutefaut la console PS srsquoexeacutecute 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 $HostUIRawUIBackgroundColor=rdquomagentardquo Saisissez ensuite lrsquoinstruction clear Il est conseilleacute drsquoutiliser la touche ltTABULATIONgt pour faire appel agrave la compleacutetion et ainsi eacuteviter de saisir un mot au complet ou encore de connaitre les diffeacuterentes possibiliteacutes Modifiez la couleur du texte en jaune en utilisant la proprieacuteteacute ForegroundColor$Host est une variable speacuteciale qui reacutefeacuterence un objet repreacutesentant la console courante

Exercice 10 La couleur vous parait horrible Crsquoest normal pour moi aussi Fermez la console et relancer PS Que constatez-vous

Comme vous ne souhaitez pas personnaliser votre console agrave chaque fois que vous en ouvrez une il est possible de la personnaliser par deacutefaut en modifiant votre profile Les informations sur votre profile peuvent ecirctre contenues dans quatre fichiers diffeacuterents Pourquoi autant Les informations de configuration peuvent ecirctre appliqueacutees pour tous les utilisateurs ou pour un seul Vous pouvez exeacutecuter PS en ligne de commande ou via un outil tiers Les 4 fichiers correspondent aux diffeacuterentes combinaisons possibles

Exercice 11 Tapez la commande $profile pour savoir ougrave se trouve votre profile Par deacutefaut votre profile PS se trouve dans le fichier nommeacute MicrosoftPowerShell_profileps1 dans le reacutepertoire WindowsPowerShell de votre reacutepertoire MesDocuments Il se peut que ce fichier nrsquoexiste pas encore et dans ce cas PS prend des valeurs par deacutefaut Creacuteez ce fichier (mecircme vide) dans le bon reacutepertoire Modifiez ce fichier avec la ligne suivante $HostUIRawUIWindowTitle=rdquoMon Windows PowerShell Personaliseacuterdquo Relancer PS

Malheureusement PowerShell srsquoexeacutecute mais avec une erreur et lrsquoeacutecran suivant srsquoaffiche

Ceci est normal par deacutefaut PS ne vous laissera pas exeacutecuter de scripts (y compris votre profile) tant qursquoil nrsquoaura pas eacuteteacute signeacute par un certificat pour des raisons de seacutecuriteacute Ceci fera lrsquoobjet drsquoun travail ulteacuterieur mais pour

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 7

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

lrsquoinstant pour voir si votre profil fonctionne il faut changer le comportement par deacutefaut de PS en lui donnant la possibiliteacute drsquoexeacutecuter des scripts locaux avec la commande suivante Set-ExecutionPolicy RemoteSigned En acceptant la modification de la strateacutegie drsquoexeacutecution il se peut que vous ayez une autre erreur qui vous preacutecise que vous nrsquoavez pas accegraves agrave la base de registre Pour reacutesoudre ce problegraveme vous devez relancer PS en tant qursquoadministrateur (clic-droit sur le programme Windows PowerShell et choisir lrsquooption Exeacutecuter en tant qursquoadministrateur) Si vous souhaitez revenir comme avant utiliser la valeur Restricted agrave la place de RemoteSigned

Vous pouvez eacutegalement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui autorisera PS agrave se plaindre quand vous utiliserez une variable qui nrsquoa pas eacuteteacute initialiseacutee Ensuite saisissez la commande $ErrorActionPreference = stop qui autorisera PS agrave srsquoarrecircter deacutes qursquoun script contiendra une erreur Pendant la saisie drsquoune commande pensez agrave utiliser la touche ltTABgt pour utiliser la compleacutetion

Pour information PS-ISE possegravede eacutegalement un profile contenu dans le script MicrosoftPowerShellISE_profileps1 et lrsquoobjet correspondant agrave PS-ISE est $psISE

41 Installation du PS Community ExtensionUne librairie suppleacutementaire peut ecirctre installeacutee en plus de PowerShell elle est disponible agrave cette adresse httppscxcodeplexcom Elle nest pas neacutecessaire pour utiliser PS mais elle permet dajouter des fonctionnaliteacutes assez puissantes Par exemple elle installe la possibiliteacute de lancer PS nimporte ougrave dans un explorateur Windows (laquo Open PowerShell here raquo) avec une instance de PowerShell ayant un reacutepertoire de travail correspondant au reacutepertoire seacutelectionneacute Par ailleurs il y a des fonctions qui traitent du presse-papier (Get-Clipboard amp Out-Clipboard) ou encore lrsquoenvoi drsquoe-mails (Send-SmtpMail) Il est eacutegalement possible de jouer avec des outils de synthegravese vocale via Out-SpeechLe seul inconveacutenient agrave lrsquoinstallation de cette librairie est la lenteur au deacutemarrage de PS

42 Ougrave sauvegarder mes scriptsVous venez drsquoeacutecrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez freacutequemment Reste agrave savoir ougrave il faut les stocker Il existe plusieurs faccedilons de sauvegarder des scripts en PS

La plus simple consiste agrave modifier votre profil et stocker les scripts agrave cet endroit Toutefois vous preacutefeacuterez peut ecirctre avoir des fichiers seacutepareacutes pour vos scripts Pour cela il est possible drsquoajouter les noms de fichiers au profile pour qursquoils soient teacuteleacutechargeacutes et accessibles Il suffit drsquoajouter la ligne suivante agrave votre profil

cfoobarmyfunctionsps1Exercice 12 Une autre option consiste agrave creacuteer un disque speacutecifique connu uniquement de PS pour toutes vos

fonctions ou scripts Eacutecrivez la commande qui permet de le faire en utilisant new-Psdrive Eacutevitez toutes interactions avec lrsquoutilisateur toutes les informations doivent se trouver dans la commande Vous pourrez exeacutecuter vos scripts en tapant scriptsmyscriptps1 si le disque creacuteeacute srsquoappelle scripts Testez la creacuteation de ce disque en creacuteant un script qui affiche les processus courants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 8

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse
Page 7: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

4 Configuration et Personnalisation de PowerShellPar deacutefaut la console PS srsquoexeacutecute 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 $HostUIRawUIBackgroundColor=rdquomagentardquo Saisissez ensuite lrsquoinstruction clear Il est conseilleacute drsquoutiliser la touche ltTABULATIONgt pour faire appel agrave la compleacutetion et ainsi eacuteviter de saisir un mot au complet ou encore de connaitre les diffeacuterentes possibiliteacutes Modifiez la couleur du texte en jaune en utilisant la proprieacuteteacute ForegroundColor$Host est une variable speacuteciale qui reacutefeacuterence un objet repreacutesentant la console courante

Exercice 10 La couleur vous parait horrible Crsquoest normal pour moi aussi Fermez la console et relancer PS Que constatez-vous

Comme vous ne souhaitez pas personnaliser votre console agrave chaque fois que vous en ouvrez une il est possible de la personnaliser par deacutefaut en modifiant votre profile Les informations sur votre profile peuvent ecirctre contenues dans quatre fichiers diffeacuterents Pourquoi autant Les informations de configuration peuvent ecirctre appliqueacutees pour tous les utilisateurs ou pour un seul Vous pouvez exeacutecuter PS en ligne de commande ou via un outil tiers Les 4 fichiers correspondent aux diffeacuterentes combinaisons possibles

Exercice 11 Tapez la commande $profile pour savoir ougrave se trouve votre profile Par deacutefaut votre profile PS se trouve dans le fichier nommeacute MicrosoftPowerShell_profileps1 dans le reacutepertoire WindowsPowerShell de votre reacutepertoire MesDocuments Il se peut que ce fichier nrsquoexiste pas encore et dans ce cas PS prend des valeurs par deacutefaut Creacuteez ce fichier (mecircme vide) dans le bon reacutepertoire Modifiez ce fichier avec la ligne suivante $HostUIRawUIWindowTitle=rdquoMon Windows PowerShell Personaliseacuterdquo Relancer PS

Malheureusement PowerShell srsquoexeacutecute mais avec une erreur et lrsquoeacutecran suivant srsquoaffiche

Ceci est normal par deacutefaut PS ne vous laissera pas exeacutecuter de scripts (y compris votre profile) tant qursquoil nrsquoaura pas eacuteteacute signeacute par un certificat pour des raisons de seacutecuriteacute Ceci fera lrsquoobjet drsquoun travail ulteacuterieur mais pour

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 7

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

lrsquoinstant pour voir si votre profil fonctionne il faut changer le comportement par deacutefaut de PS en lui donnant la possibiliteacute drsquoexeacutecuter des scripts locaux avec la commande suivante Set-ExecutionPolicy RemoteSigned En acceptant la modification de la strateacutegie drsquoexeacutecution il se peut que vous ayez une autre erreur qui vous preacutecise que vous nrsquoavez pas accegraves agrave la base de registre Pour reacutesoudre ce problegraveme vous devez relancer PS en tant qursquoadministrateur (clic-droit sur le programme Windows PowerShell et choisir lrsquooption Exeacutecuter en tant qursquoadministrateur) Si vous souhaitez revenir comme avant utiliser la valeur Restricted agrave la place de RemoteSigned

Vous pouvez eacutegalement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui autorisera PS agrave se plaindre quand vous utiliserez une variable qui nrsquoa pas eacuteteacute initialiseacutee Ensuite saisissez la commande $ErrorActionPreference = stop qui autorisera PS agrave srsquoarrecircter deacutes qursquoun script contiendra une erreur Pendant la saisie drsquoune commande pensez agrave utiliser la touche ltTABgt pour utiliser la compleacutetion

Pour information PS-ISE possegravede eacutegalement un profile contenu dans le script MicrosoftPowerShellISE_profileps1 et lrsquoobjet correspondant agrave PS-ISE est $psISE

41 Installation du PS Community ExtensionUne librairie suppleacutementaire peut ecirctre installeacutee en plus de PowerShell elle est disponible agrave cette adresse httppscxcodeplexcom Elle nest pas neacutecessaire pour utiliser PS mais elle permet dajouter des fonctionnaliteacutes assez puissantes Par exemple elle installe la possibiliteacute de lancer PS nimporte ougrave dans un explorateur Windows (laquo Open PowerShell here raquo) avec une instance de PowerShell ayant un reacutepertoire de travail correspondant au reacutepertoire seacutelectionneacute Par ailleurs il y a des fonctions qui traitent du presse-papier (Get-Clipboard amp Out-Clipboard) ou encore lrsquoenvoi drsquoe-mails (Send-SmtpMail) Il est eacutegalement possible de jouer avec des outils de synthegravese vocale via Out-SpeechLe seul inconveacutenient agrave lrsquoinstallation de cette librairie est la lenteur au deacutemarrage de PS

42 Ougrave sauvegarder mes scriptsVous venez drsquoeacutecrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez freacutequemment Reste agrave savoir ougrave il faut les stocker Il existe plusieurs faccedilons de sauvegarder des scripts en PS

La plus simple consiste agrave modifier votre profil et stocker les scripts agrave cet endroit Toutefois vous preacutefeacuterez peut ecirctre avoir des fichiers seacutepareacutes pour vos scripts Pour cela il est possible drsquoajouter les noms de fichiers au profile pour qursquoils soient teacuteleacutechargeacutes et accessibles Il suffit drsquoajouter la ligne suivante agrave votre profil

cfoobarmyfunctionsps1Exercice 12 Une autre option consiste agrave creacuteer un disque speacutecifique connu uniquement de PS pour toutes vos

fonctions ou scripts Eacutecrivez la commande qui permet de le faire en utilisant new-Psdrive Eacutevitez toutes interactions avec lrsquoutilisateur toutes les informations doivent se trouver dans la commande Vous pourrez exeacutecuter vos scripts en tapant scriptsmyscriptps1 si le disque creacuteeacute srsquoappelle scripts Testez la creacuteation de ce disque en creacuteant un script qui affiche les processus courants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 8

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse
Page 8: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

lrsquoinstant pour voir si votre profil fonctionne il faut changer le comportement par deacutefaut de PS en lui donnant la possibiliteacute drsquoexeacutecuter des scripts locaux avec la commande suivante Set-ExecutionPolicy RemoteSigned En acceptant la modification de la strateacutegie drsquoexeacutecution il se peut que vous ayez une autre erreur qui vous preacutecise que vous nrsquoavez pas accegraves agrave la base de registre Pour reacutesoudre ce problegraveme vous devez relancer PS en tant qursquoadministrateur (clic-droit sur le programme Windows PowerShell et choisir lrsquooption Exeacutecuter en tant qursquoadministrateur) Si vous souhaitez revenir comme avant utiliser la valeur Restricted agrave la place de RemoteSigned

Vous pouvez eacutegalement modifier votre profile en saisissant la commande Set-PSDebug -Strict qui autorisera PS agrave se plaindre quand vous utiliserez une variable qui nrsquoa pas eacuteteacute initialiseacutee Ensuite saisissez la commande $ErrorActionPreference = stop qui autorisera PS agrave srsquoarrecircter deacutes qursquoun script contiendra une erreur Pendant la saisie drsquoune commande pensez agrave utiliser la touche ltTABgt pour utiliser la compleacutetion

Pour information PS-ISE possegravede eacutegalement un profile contenu dans le script MicrosoftPowerShellISE_profileps1 et lrsquoobjet correspondant agrave PS-ISE est $psISE

41 Installation du PS Community ExtensionUne librairie suppleacutementaire peut ecirctre installeacutee en plus de PowerShell elle est disponible agrave cette adresse httppscxcodeplexcom Elle nest pas neacutecessaire pour utiliser PS mais elle permet dajouter des fonctionnaliteacutes assez puissantes Par exemple elle installe la possibiliteacute de lancer PS nimporte ougrave dans un explorateur Windows (laquo Open PowerShell here raquo) avec une instance de PowerShell ayant un reacutepertoire de travail correspondant au reacutepertoire seacutelectionneacute Par ailleurs il y a des fonctions qui traitent du presse-papier (Get-Clipboard amp Out-Clipboard) ou encore lrsquoenvoi drsquoe-mails (Send-SmtpMail) Il est eacutegalement possible de jouer avec des outils de synthegravese vocale via Out-SpeechLe seul inconveacutenient agrave lrsquoinstallation de cette librairie est la lenteur au deacutemarrage de PS

42 Ougrave sauvegarder mes scriptsVous venez drsquoeacutecrire un ou plusieurs scripts ou fonctions que vous souhaitez utilisez assez freacutequemment Reste agrave savoir ougrave il faut les stocker Il existe plusieurs faccedilons de sauvegarder des scripts en PS

La plus simple consiste agrave modifier votre profil et stocker les scripts agrave cet endroit Toutefois vous preacutefeacuterez peut ecirctre avoir des fichiers seacutepareacutes pour vos scripts Pour cela il est possible drsquoajouter les noms de fichiers au profile pour qursquoils soient teacuteleacutechargeacutes et accessibles Il suffit drsquoajouter la ligne suivante agrave votre profil

cfoobarmyfunctionsps1Exercice 12 Une autre option consiste agrave creacuteer un disque speacutecifique connu uniquement de PS pour toutes vos

fonctions ou scripts Eacutecrivez la commande qui permet de le faire en utilisant new-Psdrive Eacutevitez toutes interactions avec lrsquoutilisateur toutes les informations doivent se trouver dans la commande Vous pourrez exeacutecuter vos scripts en tapant scriptsmyscriptps1 si le disque creacuteeacute srsquoappelle scripts Testez la creacuteation de ce disque en creacuteant un script qui affiche les processus courants

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 8

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse
Page 9: Programmation de scripts objets avec PowerShelldenispallez.i3s.unice.fr/lib/exe/fetch.php?media=doc:cm_tp_script... · langage de script basé sur les tâches, conçu spécialement

DenisPallezunicefr Programmation de scripts objets avec PowerShell 2013-2014

Exercice 13 Fermez PS Relancer le et exeacutecutez le dernier script creacuteeacute Que se passe-t-il Pourquoi

Exercice 14 Faites en sorte que le disque speacutecifique creacuteeacute preacuteceacutedemment scripts soit connu agrave chaque lancement de PS (cf ) Choisissez bien le chemin que vous allez utiliser car nous allons lrsquoutiliser dans le reste du cours

43 Ajouter ses propres fonctions dans le menu de PS-ISEUne des caracteacuteristiques les plus inteacuteressantes de PS-ISE est de pouvoir le personnaliser avec des commandes que nous utilisons souvent pour lrsquoadministration comme nous lrsquoavons fait plus haut pour la ligne de commande Il est donc possible de personnaliser les menus de PS-ISE Pour cela il suffit drsquoeacutecrire sa cmdlet ou fonction et drsquoappliquer la meacutethode Add sur le contenu de la variable CurrentPowerShellTabAddOnsMenu Submenus (qui est une collection) de lrsquoobjet psISE

Exercice 15 Modifier le profile de PS-ISE en ajoutant un sous-menu personnaliseacute qui ajoute une commande qui affiche les processus courants Pour cela utilisez la meacutethode Add(Nom du sous-menu votre-CommandeRaccourci-clavier) sur la collection preacuteceacutedente afin drsquoobtenir le reacutesultat ci-dessous

LP ADMIN IUT de Nice ndash Deacutepartement Informatique 9

  1. Reponse01 Reacuteponse
  2. Reponse02 Reacuteponse
  3. Reponse05 Reacuteponse
  4. Reponse06 Reacuteponse
  5. Reponse07 Reacuteponse
  6. Reponse08 Reacuteponse
  7. Reponse09 Reacuteponse
  8. Reponse10 Reacuteponse
  9. Reponse11 Reacuteponse
  10. Reponse03 Reacuteponse
  11. Reponse04 Reacuteponse
  12. Reponse12 Reacuteponse
  13. Reponse13 Reacuteponse
  14. Reponse14 Reacuteponse
  15. Reponse15 Reacuteponse