Vous êtes sur la page 1sur 3

Aide-mmoire du langage Windows PowerShell

Prise en charge native pour diffrents systmes de types Windows PowerShell adapte les objets WMI, XML, ASDI, ADO et COM afin de proposer une syntaxe commune pour accder leurs proprits et mthodes. Exemple $g = Get-WmiObject Win32_Process $g[0].Name # au lieu de $g[0].Properties[Name] Oprateurs binaires arithmtiques + Addition, concatnation Soustraction * Multiplication, rptition de chane / Division % Module

tableau vide @(2) tableau 1 lment 1,(2,3),4 tableau dans un tableau ,hi tableau un lment $a[5] sixime lment du tableau* $a[2][3] quatrime lment ou troisime lment d'un tableau $a[2..20] retourner les lments 3 21 Les tableaux sont de base zro. $(1,2,3) Retourne un tableau contenant 1,2,3. $(Get-Alias a*) Retourne l'valuation de l'expression. @(Get-Alias;Get-Process) Excute les deux commandes et retourne les rsultats sous forme de tableau. Commentaires # Ceci est un commentaire parce que # est le premier caractre d'un jeton $a = #Ceci n'est pas un commentaire $a = something # mais cela en est un. Write-Host Hello#world Oprateurs de comparaison -eq gal -ne Diffrent de -gt ge Suprieur , suprieur ou gal -lt le Infrieur, infrieur ou gal i ou c peut tre ajout avant l'oprateur pour obtenir des oprations qui ne respectent pas la casse ou qui la respectent Tableau de longueur > 1 Tableau de longueur 0 Tableau de longueur 1 dont l'lment est TRUE Tableau de longueur 1 dont l'lment est FALSE Rfrence un objet Null Break (script) Les commandes break permettent de sortir d'une boucle. Elles peuvent accepter un LIBELL facultatif auquel s'arrter. Exemple : while (1) { $a = something if ($a eq 1) break; } Oprateurs d'extension de commande $( ) Retourne la valeur Null.

(par exemple, ceq) Continue (script) L'instruction continue continue l'itration suivante d'une boucle sans en sortir. Exemple : while (1) { $a = something if ($a eq 1) (continue) # Cette ligne n'est atteinte que si $a == 1 } # Cette ligne n'est jamais atteinte. Point et espace avant L'ajout d'un point et d'un espace avant un nom de fonction, un bloc de script ou un script autorise leur excution dans la porte actuelle plutt que dans une porte locale (local). Exemple : . MyFunction Si MyFunction dfinit une variable, celle-ci est dfinie dans la porte actuelle, et non dans la porte locale de la fonction. $a = {$x = Get-Process | Select First 2} . $a #value le bloc de script dans la porte actuelle Squences d'chappement Le caractre d'chappement Windows PowerShell est l'accent grave (`). Pour rendre un caractre littral, faites-le prcder de `. Pour spcifier un `, utilisez ``. Squences d'chappement spciales `0 (valeur Null) `a (alerte) `b (retour arrire) `f (saut de page) `n (nouvelle ligne) `r (retour chariot) `t (tabulation) `v (tabulation verticale)

Oprateurs d'affectation =, +=, -=, *=, /=, %= Tableaux associatifs (tables de hachage) $hash = @{ } Crer une table de hachage vide $h =@{foo=1;bar=2} Crer et initialiser une table de hachage

Oprations sur les tableaux Ce tableau contient-il un 3 1,2,3,5,3,2 contains 3 Retourner tous les lments gaux 3 : 1,2,3,5,3,2 eq 3 Retourner tous les lments infrieurs 3 : 1,2,3,5,3,2 lt 3 Tester si 2 figure dans la collection : if (1, 3, 5 contains 2) Autres oprateurs : -gt, -le, -ge, -ne Tableaux a,b,c tableau de chanes 1,2,3 tableau d'entiers @()

$hash.key1 = 1 Affecter 1 la cl key1 $hash.key1 Retourne la valeur de key1 $hash["key1"] Retourne la valeur de key1 Valeurs et oprateurs boolens TRUE FALSE $TRUE $FALSE Toute chane de longueur > 0 sauf le mot false Chane vide ou la chane false Tout nombre !=0 Tout nombre =0

Ordre d'excution Windows PowerShell essaie de rsoudre les commandes dans l'ordre suivant : alias, fonctions, applets de commande, scripts, fichiers excutables et fichiers normaux.

For (script) [:label] for ([initialiseur]; [condition]; [itrateur]) {} Exemple : for ($i = 0; $i lt 5; $i++) {Write-Object $i} Foreach (script) [:label] foreach (identificateur dans la collection) {} Expression | foreach {} Expression | foreach {BEGIN{} PROCESS{} END{}} Exemples : $i = 1,2,3 foreach ($z in $i) {Write-Object $z} Get-Process |foreach {BEGIN{$x=1} PROCESS{$X++} END{$X Processes}} Function (script) function MyFunction { write-object $args[0] } function test ([string]$label=default label,[int]$start=0) { BEGIN {$x=$start} PROCESS {$label: $_; $x++} END{$x total} } Filter (script) Un filtre (filter) est un moyen raccourci d'crire une fonction avec un bloc de script PROCESS. filter MyFilter { $_.name } If/elseif/else (script) if (condition) {} elseif (condition) {} else {} Sur la ligne de commande, l'accolade fermante doit figurer sur la mme ligne que elseif et else. Cette restriction ne s'applique pas aux scripts. Oprateur d'appel L'oprateur & peut tre utilis pour appeler un bloc de script ou le nom d'une commande ou fonction. Exemple : $a = Get-Process &$a $a = { Get-Process | Select -First 2 } &$a Oprateurs logiques !, -not, -and, -or Appels de mthodes Les mthodes peuvent tre appeles sur des objets. Exemples : $a = Ceci est une chane $a.ToUpper()

$a.SubString(0,3) $a.SubString(0,($a.length/2)) $a.Substring(($a.length/2), ($a.length/3)) Les mthodes statiques peuvent tre appeles au moyen de l'oprateur :: . [DateTime]::IsLeapYear(2005) Variables automatiques Windows PowerShell (liste non exhaustive) $$ Dernier jeton de la ligne de commande prcdente $? tat boolen de la dernire commande $^ Premier jeton de la ligne de commande prcdente $_ Objet de pipeline actif $Args Arguments passs un script ou une fonction $Error Tableau d'erreurs de commandes prcdentes $Foreach Rfrence l'numrateur d'une boucle foreach $Home Rpertoire de base de l'utilisateur ; gnralement dfini sur %HOMEDRIVE%\%HOMEPATH% $Host Rfrence l'application qui hberge le langage POWERSHELL $Input numrateur des objets dirigs vers un script $LastExitCode Code de sortie du dernier programme ou script $Matches Table de hachage des correspondances trouves avec l'oprateur de correspondance $PSHome Emplacement d'installation de Windows PowerShell $profile Profil standard (peut ne pas tre prsent) $StackTrace Dernire exception intercepte par Windows PowerShell

$Switch numrateur d'une instruction switch Proprits d'objets Les proprits d'un objet peuvent tre rfrences directement avec l'oprateur . . $a = Get-Date $a.Date $a.TimeOfDay.Hours Les proprits statiques peuvent tre rfrences avec l'oprateur :: . [DateTime]::Now Prcdence des oprateurs Dans Windows PowerShell, les oprateurs sont valus selon la prcdence suivante : () {}, @ $, !, [ ], ., &, ++ --, + -, * / % unaires, + - binaires, oprateurs de comparaison, -and or, |, > >>, = Autres oprateurs , Constructeur de tableau .. Oprateur de plage -contains -is valuateur de type -as Convertisseur de type -band and binaire -bor or binaire -bnot not binaire Return (script) La commande return sort de la fonction ou du script actuel et retourne une valeur. Exemple : function foo { return 1 } Portes (script)

Les variables et d'autres lments de donnes peuvent tre instancis dans diffrentes portes : Les variables de porte global sont visibles dans toutes les portes. Les variables de porte script sont visibles dans toutes les portes de ce fichier de script. Les variables de porte local sont uniquement visibles dans la porte actuelle et ses enfants. Les variables de porte private sont visibles uniquement dans la porte actuelle. Une porte est cre dans le corps d'une fonction Shell (voir la cration des fonctions) Exemple : $global:a = 4 $script:a = 5 $local:a = 3 $private:a = 6 Blocs de script Les commandes et expressions peuvent tre stockes dans un objet de bloc de script et tre excutes ultrieurement. Exemple : $block = {Get-Process; $a=1} &$block Scripts Les commandes Windows PowerShell peuvent tre stockes dans et excutes partir de fichiers de script. L'extension de fichier des scripts Windows PowerShell est .ps1 . Des paramtres peuvent tre passs un script et un script peut retourner une valeur. Exemple : $sum = MyAdder.ps1 1 2 3 Chanes Constantes de chane : ceci est une chane, cette $variable est tendue comme $(2+2) ceci est une chane, cette $variable n'est pas tendue @ Ceci est une chane ici qui peut contenir n'importe quoi y compris des retours chariot et des guillemets. Les expressions $(2+2) sont values @ @ La chane ici avec guillemets simples n'value pas d'expressions. @ Oprateurs de chane + Concatner deux chanes * Rpter une chane un certain nombre de fois

-f Mettre en forme une chane (spcificateurs de format .NET) -replace Oprateur de remplacement "abcd" replace bc, TEST aTESTd -match Correspondance d'expression rgulire -like Concordance par caractres gnriques

# de $ErrorActionPreference } Oprations de type (script)

-is

IS type (par ex.. $a -is [int] ) -as convertit en type (par ex. 1 -as [string] traite 1 comme une chane [string]) Until (script) do { } until (condition) Variables Format : $[scope:]name or ${anyname} or ${any path} Exemples : $a = 1 ${!@#$%^&*()}=3 $global:a = 1 # visible partout $local:a = 1 # definie dans cette porte et visible pour les enfants $private:a=1 # identique local, mais invisible pour les portes enfants $script:a=1 # visible pour tout dans ce script $env:path = d:\windows ${C:\TEMP\testfile.txt}=Ceci crit dans un fichier Get-Variable scope 1 a #Obtient une valeur de la porte parente Get-Variable scope 2 a # grand-parent While (script) [:label] while (condition) { } do { } while (condition)

Switch (script) La variable $_ est disponible dans le script. $_ reprsente la valeur actuelle value. Si un tableau est utilis dans switch, chaque lment du tableau est test. Exemple : $var = "word1","word2","word3" switch -regex ($var) { "word1" {"Multi-match Exact " + $_ } "word2" {"Multi-match Exact " + $_ } "w.*2" {"Pattern match Exact " + $_ } default {"Multi-match Default " + $_ } } Rsultat : Multi-match Exact word1 Multi-match Exact word2 Pattern match Exact word2 Multi-match Default word3 Throw Throw fournit pour les scripts les mmes fonctionnalits que l'API ThrowTerminatingError pour les applets de commande. throw "Danger, Danger" Danger, Danger la ligne : 1 Caractre : 6 + throw <<<< "Danger, Danger" Throw accepte une chane, une exception ou ErrorRecord en tant qu'argument. Interceptions (trap) Trap [ExceptionType] { if () { continue # continue l'instruction du script qui suit celle ayant caus # l'interception ; $? est mise jour, mais aucun enregistrement d'erreur n'est gnr } else () { Break # lve de nouveau l'exception } # Ne rien faire aura pour effet la ralisation de l'action spcifie comme valeur

2+2 4 "Hello" + " world" Hello world $a = "hi" $a.length * 13 26 Lors de l'analyse en mode Commande, les chanes n'ont pas besoin de figurer entre guillemets et tout est trait comme une chane l'exception des variables et des lments entre parenthses. Par exemple : copy users.txt accounts.txt users.txt et accounts.txt sont traits comme des chanes write-host 2+2 2+2 est trait comme une chane et non comme une expression valuer copy $src $dest $src et $dest sont des variables. Le fait de ne pas avoir utiliser de guillemets lors du travail dans un environnement de commande peut tre trs avantageux sur le long terme, car cela rduit considrablement le volume de saisie ncessaire. Le mode d'analyse est dtermin par le premier jeton rencontr. Si le jeton est un nombre, une variable ou une chane entre guillemets, l'environnement utilise le mode Expression. Si la ligne commence par une lettre, une esperluette (&) ou un point (.) suivi d'un espace ou d'une lettre, l'analyse est effectue en mode Commande. 2+2 Le mode Expression dmarre avec un nombre. "text" Le mode Expression dmarre avec un guillemet. text Le mode Commande dmarre avec une lettre. & "text" Le mode Commande dmarre avec une esperluette. . "file.ps1" Le mode Commande dmarre avec un point suivi d'un espace. .125 Le mode Expression dmarre avec un point suivi d'un nombre, et non d'un espace ou d'une lettre. .text Le mode Commande dmarre avec un point qui fait partie du nom de commande .text . Combiner des expressions et des commandes est trs utile. Vous pouvez pour ce faire utiliser des parenthses. Dans les parenthses, le processus de dcouverte du mode recommence. Write-Host (2+2) 2+2 est trait comme une expression valuer et pass la commande Write-Host. (Get-Date).day + 2 Get-Date est trait comme une commande et le rsultat de

son excution devient la valeur de gauche dans l'expression. Vous pouvez imbriquer des commandes et expressions sans restrictions. Write-Host ((Get-Date).day + 2) Get-Date est une commande. ((Get-Date).day+2) est une expression et Write-Host ((Get-Date).day + 2) est de nouveau une commande. Write-Host ((Get-Date) - (Get-Date).date) La commande Get-Date est utilise deux fois pour calculer le temps coul depuis minuit (condition).

Analyse Windows PowerShell propose deux modes d'analyse : Commande et Expression. En mode Expression, Windows PowerShell analyse comme le font la plupart des langages de haut niveau : les nombres sont des nombres ; les chanes doivent figurer entre guillemets, etc. Les expressions sont des lments tels que :