Vous êtes sur la page 1sur 8

Mémento Windows PowerShell

Comment accéder à des arguments Comment Insérer un Commentaire


Pour accéder aux arguments utilisés dans la ligne de commande à Pour insérer un commentaire utiliser le caractère dièse (#) :
l'appel du script employer la variable automatique $args. Vous # Ceci et un commentaire et non une ligne de commande.
pouvez faire une rotation sur les différents arguments dans la liste
$args à l'aide du code suivant : <# Ceci est un bloc de commentaire
AIDE : about_Foreach ; about_Functions ; about_Arrays sur plusieurs lignes #>
foreach ($i in $args) {$i}
Comment Acquérir une Réponse
Pour accéder à un argument particulier employez un index, avec 0 Pour récupérer une réponse utilisateur, utiliser la fonction Read-
pour le premier argument, 1 pour le deuxième argument, etc. : Host, suivit du message à afficher :
AIDE : ConvertFrom-SecureString ; ConvertTo-SecureString
$args[0]
$a = Read-Host "S'il vous plait, donner votre nom"
Vous pouvez récupérer le dernier item de la collection à l'aide de
l'index -1 : Comment Insérer une Ligne Suite
$args[-1] Pour insérer une ligne suite dans un script PowerShell script
Pour l'avant dernière ligne utilisez l'index [-2], pour l'antépénultième utiliser le caractère apostrophe inverse (`) :
l'index [-3], etc… et vous remontez ainsi dans les variables. Write-Host `
Comment Utiliser le Texte Coloré "Ceci est une ligne suite."
Pour afficher le texte dans une couleur différente utiliser la fonction Vous pouvez aussi utiliser le caractère pipe (|) si votre commande
Write-Host et spécifier une couleur de premier plan : l'utilise :
Write-Host "test" -foregroundcolor "green" Get-ChildItem C:\Scripts |
Sort-Object Length –Descending
Vous pouvez aussi spécifier une couleur de fond :
Write-Host "test" -backgroundcolor "red" Comment Créer une Ligne à Commandes Multiples
Vous pouvez aussi combiner les deux sur la même ligne de Pour utiliser plusieurs commandes ou fonction dans une même
commande. ligne séparer chaque commande ou fonction par un point-virgule
(;) :
Comment Insérer une Marque de Paragraphe ou autre
$a = 1,2,3,4,5; $b = $a[2]; Write-Host $b
Pour insérer une marque de paragraphe (RC+LF) dans votre texte
utiliser le caractère nouvelle ligne `n : Comment Faire des Comparaisons
AIDE : about_Special_Characters
Certaines fonctions PowerShell (comme Where-Object) utilisent
Write-Host "Line 1.`nLine 2."
un ensemble d'opérateurs de comparaison, voir le tableau ci-
Vous pouvez aussi utiliser les caractères suivant : après.
`0 Renvoi le caractère Null AIDE : Rubriques d'aide relatives aux applets de commande Windows PowerShell
`a Alerte Chacun de ces opérateurs peut être rendu sensible à la casse en
`b Retour arrière d'un caractère ajoutant un "c" immédiatement après le trait d'union.
`f Saut de page Par exemple :
`n Nouvelle ligne
`r Retour chariot (début de ligne) -ceq représente le case-sensitive de l'opérateur "égal à" ;
`t Tabulation horizontale -clt représente le case-sensitive de l'opérateur "inférieur à".
`v Tabulation verticale
La commande suivante : Opérateur Description
Write-Host "`a`t***************************`n`t* Une -lt inférieur à
erreur est survenue *`n`t***************************" - -le inférieur ou égale à
BackgroundColor Black -ForegroundColor Red -gt plus grand à
Après un "bip" affiche : -ge plus grand ou égale à
*************************** -eq égale à
* Une erreur est survenue * -ne non égale à
*************************** -like resemble à / ne resemble pas à
-notlike (utilise les caractères de substitution)
Comment Ecrire un Avertissement en Inverse Vidéo -match correspond à / ne correspond pas à
Pour afficher un message en inverse vidéo utiliser la fonction -notmatch (utilise les caractères de substitution)
AIDE :about_Comparison_Operators ; about_Logical_Operators ;
Write-Warning : about_Regular_Expressions ; about_Operators ; about_Arithmetic_Operators ;
about_Assignment_Operators ; about_Type_Operators ; about_Split ; about_Join ;
Write-Warning "Une erreur est survenue." about_Redirection

1/8
Mémento Windows PowerShell
Comment Lire un Fichier Texte Comment Envoyer un Courriel
Pour mettre contenu d'un fichier dans une variable utiliser la Pour envoyer un courriel il faut initialiser la variable
fonction Get-Content suivit du nom complet du fichier : PSEmailServer puis utiliser la fonction suivante :
AIDE :about_Providers AIDE : about_Preference_Variables

$a = Get-Content C:\Scripts\Test.txt send-mailmessage -to "User01 <user01@example.com>"


-from "User02 <user02@example.com>" -subject "Test
Chaque ligne du fichier est un article du tableau $a. mail"
Si vous voulez accéder à une ligne du fichier vous pouvez
simplement spécifier l'index correspondant à cette ligne : Comment Utiliser le Traitement Conditionnel
$a[0] Pour écrire un traitement conditionnel vous pouvez utiliser
l'instruction If comme ci-après :
La commande suivante renvoi le dernier enregistrement de $a : $a = "white"
if ($a -eq "red")
$a[-1]
{"La couleur est rouge."}
Pour l'avant dernière ligne utilisez l'index [-2], pour l'antépénultième elseif ($a -eq "white")
l'index [-3], etc… et vous remontez ainsi dans le fichier. {"La couleur est blanche."}
else
Bonus. Pour déterminer le nombre de lignes, de mots, et de {"La couleur est bleu."}
caractères dans un fichier texte utiliser la commande :
Plutôt que d'écrire une série de "If" imbriqués vous pouvez utiliser
get-content c:\scripts\test.txt | l'instruction Switch comme en VB Script l'instruction Select Case :
measure-object -line -word –character $a = 2
switch ($a)
Comment Ecrire dans un Fichier Texte {
1 {"La couleur est rouge."}
Pour écrire dans un fichier texte utiliser la fonction Out-File : 2 {"La couleur est bleu."}
AIDE :Tee-Object ; Out-Null ; Out-Printer ; Out-Host ; Out-File ; Out-String ; Out-Default ;
Utilisation des commandes Format pour modifier l'affichage de la sortie 3 {"La couleur est verte."}
4 {"La couleur est jaune."}
Get-Process | Out-File C:\Scripts\Test.txt default {"Autre."}
}
Pour ajouter des données à la fin d'un fichier existant, ajouter
après le nom du fichier le paramètre -append : $a = "Red"
Get-Process | Out-File C:\Test.txt –append switch ($a)
{
Vous pouvez aussi utiliser les caractères de redirection MS-DOS "Red" {"La couleur est rouge."}
(> pour écrire, >> pour ajouter) dans PowerShell. "Blue" {"La couleur est bleu."}
"Green" {"La couleur est verte."}
Cette commande écrit aussi dans le fichier
"Yellow" {"La couleur est jaune."}
C:\Scripts\Test.txt : default {"Autre."}
Get-Process >C:\Scripts\Test.txt }
AIDE :about_If ; about_Switch ; about_Break ; about_Continue ; about_Script_Blocks ;
Vous pouvez aussi enregistre la sortie de la commande dans un Rubriques d'aide conceptuelle de Windows PowerShell
fichier ou une variable, puis l'affiche à la console avec Tee-Object. Comment Utiliser For et For Each Loops
C:\PS>get-process | tee-object -filepath Pour utiliser l'instruction For, utiliser un code similaire à celui-ci :
C:\Scripts\testfile2.txt
for ($a = 1; $a -le 10; $a++) {$a}
Une autre possibilité c'est d'utiliser la fonction Export-CSV pour
sauvegarder les données dans un fichier au format CSV : De la même manière l'instruction For Each peut s'utiliser comme
suit :
Get-Process | Export-CSV C:\Test.csv foreach ($i in get-childitem c:\scripts)
{$i.extension}
Vous pouvez aussi utiliser la fonction Add-Content AIDE : about_For ; about_Foreach ; about_Language_Keywords ;
Rubriques d'aide conceptuelle de Windows PowerShell
Add-Content -Path <nom_fichier> -Value <valeur>
Comment Utiliser Do Loops
Comment Imprimer des Données Pour utiliser l'instruction Do loop, utiliser un code similaire à celui-
Pour imprimer des données sur l'imprimante par défaut utiliser la ci après, en remplaçant le code entre les accolades par le code à
fonction Out-Printer : exécuter sur chaque itération de la boucle. Et en remplaçant le
Get-Process | Out-Printer code à l'intérieur des parenthèses par les conditions de boucle :

Vous pouvez aussi spécifier une imprimante : $a = 1


do {$a; $a++}
Get-Process | Out-Printer -Name "HP Laser Jet" while ($a -lt 10)
$a = 1
2/8
Mémento Windows PowerShell
do {$a; $a++}
until ($a –gt 10)
Comment Récupérer l'Historique des Commandes
AIDE : about_Do ; about_While ; about_Language_Keywords ; Pour obtient la liste des commandes entrées pendant la session
Rubriques d'aide conceptuelle de Windows PowerShell
active utiliser la fonction Get-History
Comment Créer un Objet COM Get-History
Pour travailler avec un objet COM (Component Object) utiliser la (retourne les dernières 32 commandes envoyées)
fonction New-Object suivie du paramètre Get-History -count 32767
-comobject et du ProgID : (retourne toutes les commandes envoyées)

$a = New-Object -comobject ` Comment Travailler avec WMI


"Excel.Application"
$a.Visible = $True Pour récupérer des informations d'ordinateur en utilisant les appels
AIDE : Création d'objets .NET et COM (New-Object) ; WMI passer par la fonction Get-WMIObject suivie du nom de la
Rubriques d'aide relatives aux applets de commande Windows PowerShell
classe :
AIDE :Obtention d'objets WMI (Get-WmiObject) ; Collecte d'informations sur des ordinateurs
Comment Créer un Objet .NET
Pour instancier et utiliser un objet .NET Framework encadrer le Get-WMIObject Win32_BIOS
nom de la classe entre crochet "[ ]" et pour la méthode utiliser une Si la classe que vous voulez utiliser n'existe pas dans l'espace de
paire de deux points "::" : nom CIMV2 rajouter simplement le paramètre
[system.Net.DNS]::resolve("207.46.198.30") -namespace :

Pour créer un objet lié à l'objet .NET Framework utiliser la fonction Get-WMIObject SystemRestore `
-namespace root\default
New-Object :
$a = new-object ` Pour accéder aux données d'une autre machine utiliser le
-type system.diagnostics.eventlog ` paramètre -computername :
-argumentlist system Get-WMIObject Win32_BIOS `
Remarque : C'est un aperçu succinct du travail avec .NET. –computername atl-ws-01

Les deux techniques montrées ici ne fonctionneront pas Pour limiter le nombre de données retournées utiliser une WQL
nécessairement avec toutes les classes de .NET. query avec le paramètre -query :
Comment "Intéroger" un Objet Get-WMIObject -query `
"Select * From Win32_Service `
Pour récupérer des informations sur les propriétés et les méthodes Where State = 'Stopped'"
d'un objet, recherchez une instance de cet objet et rediriger l'objet
sur la fonction Get-Member. Attention : La fonction Get-WMIObject ne remonte pas tous
Par exemple, cette commande renvoie les propriétés et les champs WMI. Par exemple Get-WMIObject Win32_BIOS sur les
méthodes disponibles sur les processus : 31 champs ne retourne que 5 champs. Pour en avoir plus il faut
passer par une variable et même dans ce cas il se peut que tous
Get-Process | Get-Member les champs ne soit pas accessible. Pour avoir la liste des champs
accessible taper :
Comment Sélectionner des Propriétés
Get-WMIObject Win32_BIOS | Get-Member
Pour utiliser et/ou afficher les propriétés spécifiques d'une liste,
rediriger le résultat vers la fonction Select-Object comme ci- Comment se Ratacher à l'Active Directory
dessous :
Pour se rattacher à un compte Active Directory utiliser le
Get-Process | Select-Object Name, Company fournisseur LDAP :
Comment Trier des Données $a = [adsi] "LDAP ://cn=kenmyer, `
ou=Finance, dc=fabrikam, dc=com"
Pour trier des données issues de PowerShell rediriger simplement
le résultat vers la fonction Sort-Object, préciser alors la ou les L'énumération de tous les objets d'une OU est un peu compliquée.
propriété(s) sur laquelle ou lesquelles porte le tri : Cependant, une manière relativement simple d'accomplir cette
Get-Process | Sort-Object ID tâche est se lier à l'OU et puis d'employer la méthode de
PSBase_GetChildren() pour rechercher une collection d'articles
Vous pouvez aussi ajouter le paramètres –descending ou stockés dans cette OU :
–ascending pour spécifier un ordre de tri:
$objOU = [ADSI]`
Get-Process | Sort-Object ID –descending "LDAP ://ou=Finance,dc=fabrikam,dc=com"
Vous pouvez même trier avec des critères multiples : $users = $objOU.PSBase.Get_Children()
$users | Select-Object displayName
Get-Process | Sort-Object ProcessName,ID ou
Get-Process | Sort-Object -property CPU,ID

3/8
Mémento Windows PowerShell
Comment se Rattacher a un Compte Local Comment faire un Copier Coller
Pour se rattacher à un compte local utiliser le fournisseur WinNT : Pour permettre un copier-coller simple dans la console de
PowerShell faites ce qui suit :
$a = [adsi] "WinNT ://atl-ws-01/kenmyer"
$a.FullName
Lancer PowerShell, puis cliquez sur l'icône dans le coin supérieur
gauche et choisissez Propriétés.
Comment Modifier l'affichage de sortie Dans la fenêtre de dialogue Propriétés de : "Windows
Pour modifier l'affichage de la sortie utiliser les fonctions Format-* PowerShell", dans l'onglet Options, cocher dans Option
AIDE : Format-Wide ; Format-List ; Format-Table ; Format-Custom ; d'édition Mode d'édition rapide et cliquent sur alors l'OK.
Utilisation des commandes Format pour modifier l'affichage de la sortie
Get-PSSnapin | format-table -auto Pour copier le texte dans la fenêtre de console sélectionnez le
texte et puis pressez "Entrée".
Comment Utiliser Aide Pour coller le texte dans la fenêtre cliquez sur le bouton droit de la
Pour avoir une aide complète sur une fonction PowerShell, utiliser souris.
la fonction Get-Help suivie du paramètre -full. Dans cette même fenêtre vous pouvez aussi modifier d'autres
Par exemple pour voir les informations sur la fonction Get-Process paramètres.
taper ce qui suit : Si vous voulez que ces paramètres soient positionnés par défaut
Get-Help Get-Process –full cliquez sur l'icône dans le coin supérieur gauche et choisissez Par
défaut.
Pour avoir des exemples sur des fonctions utiliser le paramètre
–examples : Comment exécuter un Script
Get-Help Get-Process –examples Pour exécuter un script Windows PowerShell, taper le chemin
complet du script (ou donnez le nom du script si il est stocké dans
Si vous ne vous rappelez pas exactement le nom d'une fonction, un dossier qui fait partie de votre variable "Path" Windows) :
utiliser la fonction Get-Command pour visualiser la liste de toutes
les fonctions actives dans votre environnement : C:\Scripts\Test.ps1 ou .\Test.ps1 si dans C:\Scripts

Get-Command Si le nom du script contient des espaces vous devez le faire


précéder d'une esperluette et le mettre en double cotes.
Pour la liste des alias utiliser la fonction Get-Alias :
Par exemple :
Get-Alias
& "C:\Scripts\My Scripts\test.ps1"
Comment Changer les Paramètres de Sécurité A l'extérieur d'une fenêtre PowerShell (par exemple, de la boîte de
Pour exécuter un script PowerShell vous devez changer vos dialogue Exécuter ou d'une fenêtre de Cmd.exe) vous devez
paramètres de sécurité. appeler Windows PowerShell et puis passer le chemin complet
Par défaut, PowerShell exécute seulement des scripts signés par comme argument à cet appel :
une autorité de confiance. Pour permettre à PowerShell d'exécuter powerShell.exe -file "C:\temp\test.ps1"
tous les scripts créés localement (indépendamment de s'ils ont été
powershell.exe –noexit C:\Scripts\Test.ps1
signés) employer la commande suivante :
AIDE : about_Execution_Policies Le paramètre -noexit assure que la fenêtre de PowerShell restera
Set-ExecutionPolicy RemoteSigned ouverte après que le script se soit terminé.
Si une erreur "Impossible de charger le fichier … , car
Utilisation de la Console PowerShell et de l'Aide l'exécution de scripts est désactivée" apparait vous devez
Pour accéder à la "Console PowerShell" et donc à l'aide, deux modifier les stratégies d'exécution (voir : Comment Changer les
méthodes : Paramètres de Sécurité)
1. Par le menu "Démarrer" - "Accessoires" - "Windows PowerShell"
- "Windows PowerShell ISE"
Comment sortir d'un Script, d'une Boucle
2. Depuis une fenêtre PowerShell par la commande : Pour quitter immédiatement une boucle "Foreach, For, While, Do
&"$PSHOME\powershell_ise.exe" ou Switch" ou un "if" utiliser :
ou Break
. "$PSHOME\powershell_ise.exe" Attention cela peut provoquer la sortie du script ou de la fonction tout dépend du niveau
d'indentation.
De là vous aurez accès à l'aide et à ses rubriques signalées dans
ce document par un paragraphe comme celui-ci après : Pour sortir d’une fonction, ou bien d‘un bloc de script utiliser :
AIDE : return [valeur]
[valeur] éventuelle valeur de retour
Comment Effacer la Fenêtre PowerShell Pour sortir d'un script utiliser :
Pour effacer la fenêtre PowerShell utiliser la fonction Clear-Host Exit [n]
[n] représente le niveau de sortie, par défaut zéro
(ou son alias cls).

4/8
Mémento Windows PowerShell
• align (caractère virgule puis valeur numérique) indique la
Caractères Spéciaux du Langage PowerShell position / décalage dans le "champ", aligné à gauche si négatif
Préfixe le nom d’une variable ("$_" est l’objet
$ Dollar
en cours) , à droite si positif.
[] Crochets
Encadre un type de variable ou l’indice des • :format (caractère deux points puis caractère(s) MIN ou MAJ de
éléments d’un tableau [int] $var $tableau[$i] format)
Encadre un ensemble de code (bloc
{} Accolades
d’instructions expressions, filtres, boucles …) Quelques exemples de format :
Groupe de commandes ou d’expressions (évite o dn : pour complète la valeur avec "n" zéros
() Parenthèses
l’ambiguïté des évaluations) o Xn : conversion de la valeur en hexa sur "n" caractères en
[AltGr]+[6] Pipeline (enchainement de commandes majuscule
et/ou de filtres) – Peut être mis en fin d’une
| Pipe
ligne de commande ds un script, la suite sur la
o P : conversion de la valeur en pourcentage
ligne suivante. o C : conversion de la valeur en valeur monétaire
Membre d’une instance d’objet (méthode ou o hh : affiche uniquement l’heure d’une valeur "date"
. Point propriété) (ou séparateur décimal, la virgule o mm : affiche uniquement les minutes d’une valeur "date"
étant un séparateur de valeur)
séparateur de valeur, typiquement pour les Chaque bloc de format est encadré par des accolades { } – les
, virgule
éléments d’un tableau caractères entre chaque bloc de format tels que des espaces sont
.. Point Point
Plage de valeurs (par exemple "1..10" désigne pris en compte. Le format des dates est très riche. Voici quelques
tous les chiffres de 1 à 10) exemples d’utilisation :
Double 2 Membre statique d’une classe .NET Format Description Exemple Résultat
::
points {0} uniquement les éléments "{1}" -f "a","b" b
Reste de division (Modulo) Ou alias de la désignés
% Pourcent
commande de boucle ForEach "%{$_}" {0:X} un entier au format "{0:X}" -f 255 FF
# Dièse Commentaire ou <# bloc de commentaire #> hexadécimal majuscule
[AltGr]+[7] – Caractère d’échappement (évite {0:x} un entier au format "0x{0:x}" -f 255 0xff
l’interprétation du caractère qui suit) – hexadécimal minuscule
` Anti-quotte
permet de couper une ligne d’instruction s’il {0:dn} un décimal justifié à "{0:d5}" -f 255 00255
est situé en fin de ligne gauche complété avec
Point Alias de la commande Where-Object des zéros
? d’interrogatio {0:pn} un pourcentage (n= "{0:p}" -f 0.196 19,6 %
n décimales ou arrondi) "{0:p0}" -f 0.196 20 %
Permet d’écrire plusieurs instructions sur la {0:cn} une valeur monétaire "{0:c}" -f 19 19.00 €
même ligne. (ou de terminer explicitement une (n= décimales ou
; Point-virgule ligne d’instruction, et ainsi éviter une erreur arrondi : 2 par défaut)
d’interprétation lorsque le retour ligne est {0:hh} uniquement l’unité de "{0:HH}:{0:mm}:{0:ss} 13:00:16
malencontreusement supprimé…) {0:mm} temps d’une valeur de {0:dddd} jeudi
Tableau de valeurs si suivi de parenthèses @( ) {0:ss} type date(hh=format 12h {0:dd}/{0:MM}/{0:yyyy}" 30/06/2016
ou table de hachage si suivi d’accolades @{ }. – HH=format 24h ) -f (get-date)
@ Arrobase
Cas particulier pour du “texte pur” @’ here- {0,n} un champ de largeur "n" "[{0,7}]" -f "ab" [ ab]
string ‘@ aligné à droite (n
Opérateur d’invocation ou d’appel (Exécution étant positif)
& Esperluette
d’un bloc de script ou d’une commande) {0,-n} un champ de largeur "n" "[{0,-7}]" -f "ab" [ab ]
Point Opérateur logique d’inversion équivalent à “- aligné à gauche (n
!
exclamation not” étant négatif)
Encadre typiquement une chaine “non protégée”. {0,n:c} une valeur monétaire "[{0,8:C}]" -f 12.3 [ 12,30 €]
“ Guillemets Les variables $… sont remplacées par leur dans un champ de
valeur respective ou rien si vide. largeur "n"
Encadre strictement une chaine en évitant toute {0,n:e} un nombre en valeur "[{0,8:e}]" -f 12.3 [1,230000e
‘ Simple quottes interprétation des caractères qu’elle scientifique dans un +001]
contient”. champ de largeur "n"

Comment Formater une Chaîne de Caractères Comment Utiliser les Opérateurs


Vous pourrez rencontrer certains exemples comportant un En plus des opérateurs de comparaisons déjà vu en page 1
opérateur particulier, dit de mise en forme "-f", permettant de PowerShell vous propose d'autres opérateurs :
formater une chaîne de caractères via les spécificateurs de format
.NET. Opérateurs d'affectation
Format Description Exemple Résultat
Son usage est particulièrement délicat et l’aide intégrée sur le sujet = affectation $a = 1 $a contient 1
est plutôt pauvre. Voici donc une petite présentation : += incrémentation $a += 4 ajoute 4 à $a
Cet opérateur est précédé du motif/modèle de formatage qu’il -= décrémentation $a -= 2 soustrait 2 à $a
utilise, la syntaxe de base est la suivante : *= multiplie $a *= 3 multiplie $a par 3
/= divise $a /= 4 divise $a par 4
"{<index>[,<align>][:<format>]}{<index>[,<align>][:<for
mat>]}" –f valeur1, valeur2....
%= modulo $a %= 5 $a = 23 $a modulo 5 = 3
car 3 = 23 – (4*5)
• index : correspond au numéro d’ordre des éléments passés à ++ incrémentation de 1 $a++ plus 1 dans $a
l’opérateur -f (0 correspond à la valeur1 et 1 pour la valeur2 et -- décrémentation de 1 $a-- moins 1 dans $a
ainsi de suite)

5/8
Mémento Windows PowerShell
Opérateurs Logique sur les bits Opérateurs de Redirection
Format Description >, >> Les opérateurs de redirection vous permettent d'envoyer
-band ET
-bor
les sorties de types particuliers (le succès, l'erreur,
OU (inclusif)
-bxor OU (exclusive) l'avertissement, verbeux et déboguent) vers des fichiers.
-bnot NON (inverse) Output streams * toutes les sorties (RUF)
opérateur de décalage 1 sortie sans erreur
-shl décalage gauche
-shr décalage droite
2 les erreurs
(arithmétique pour les valeurs signées, logique pour les 3 les messages d'avertissements (RUF)
valeurs non signées) 4 les messages verbeux (RUF)
5 les messages de Debugge (RUF)
Opérateurs Logique
Format Description # Ecrit les messages d'avertissements dans warning.txt
-and ET Do-Something 3> warning.txt
-or OU (inclusif) # Ajoute les messages verbeux dans verbose.txt
-xor OU (exclusive)
-not, ! NON (inverse)
Do-Something 4>> verbose.txt
# Ecrit les messages de Debugge dans la sortie sans erreur
Autres Opérateurs Do-Something 5>&1 (RUF)
Format Description Exemple Résultat
$( ) Sous-expression # Redirige toutes les sortie 1 et 2 vers $null
$a = "Get-Process" Liste tous les Do-Something > $null 2>$null
Appel, aussi connu RUF : Réservé à un Usage Future
& $a processus
& comme "l'opérateur
(voir : d'invocation",
"Comment permet d'exécuter
$sb = { Get-Process | Liste les 2 1er Comment Utiliser les Tableaux
Select –First 2 } processus Format Description
exécuter un les commandes qui
& $sb "a", "b", "c" Tableau de chaines de caractères
Script") sont stockées dans
des variables 1,2,3 Tableau d'entiers
& $a | Select –First 2 idem @() Tableau vide
La Virgule @(2) Tableau de un élément
, constructeur de “abc”,”def”,”ghi” 1,(2,3),4 Tableau avec un Tableau imbriqué
tableau
,"hi" Tableau de un élément
le Point exécute
Tableau de 6 éléments.
. le script comme . sample.ps1 $arr[5]
Les Tableaux commencent à zéro
une commande
$arr[2..20] Retourne les éléments 3 à 21
5
$arr[-1] Retourne le dernier élément du tableau
1..5|foreach {$_ * 5} 10
.. Plage de valeur Chaque élément de 1 à 15 $arr[-3..-1] Retourne les 3 derniers éléments du tableau
5 est multiplié par 5 20 Retourne les éléments en position 1,4 et 6 à
$arr[1,4+6..9]
25 9.
Tableau de sous- Force le résultat sous forme de Tableau, en
@( ) $arr=@(Get-Process) utilisant l'opérateur de sous-expression de
expression
[datetime]$birthday = lundi 10 Tableau
"1/10/66" janvier 1966 $arr=1..10
Force le type $arr[($arr.length- Inverse un Tableau
[] 00:00:00
d'une variable 1)..0]
[string]$birthday =
"1/10/66" 1/10/66 Ajoute une valeur au deuxième article du
-as Conversion de type $a = 42 –as [String] Tableau (augmente la valeur de l'élément si
$arr[1] += 200
Retourne True si c'est un nombre, si non ajoute la chaine
le nombre de correspondante)
-contains 1,2,3,4,5 -contains 3 True Crée un nouveau Tableau basé sur une
droite et contenu $b = $arr[0,1 + 3..6]
-notcontains 1,25,5 -notcontains 25 False sélection d'éléments d'un tableau existant.
dans la liste de
gauche Concatène deux tableaux en un seul, utilise
$z = $arr + $b
Evaluateur l'opérateur +.
Retourne True si 42 -is [int] True $arr=$arr+$(1..10) Rajoute dix éléments à un tableau
-is, -isnot l'objet est une 42.72 -is [int] False $arr.Length Retourne la longueur du tableau qui est
instance de type 42.72 -is [double] True $arr.Count aussi le nombre d'entrées.
.NET
Concatène $arr[n].ToString() Convertit l'élément 'n' en chaine de
plusieurs chaines caractères
“abc”,”def”,”ghi” - $aaa=$arr.Clone() Clown un tableau dans un autre $aaa=$arr
-join en une seul avec abc;def;ghi
join “;” $arr[n].Equals(x) Test si l'élément 'n' = x
la chaine de
droite $arr.Get(n) Retourne l'élément 'n' $arr[n]
Remplace une $arr.GetHashCode() Retourne le HashCode du tableau
“abcde” -replace “bc”, $arr[n].GetType() Retourne le type de l'élément 'n'
-replace chaine par une aTESTde
“TEST” $arr.GetValue(n) Retourne la valeur de l'élément 'n'
autre
Découpe la chaine $arr['n']
de gauche sur ab $arr.IsFixedSize ┐
"abdecfgdehi" -split $arr.IsReadOnly ├ Renvoi les états du tableau
-Split plusieurs ligne au cfg
"de" $arr.IsSynchronized ┘
séparateur de hi
droite
6/8
Mémento Windows PowerShell
Format Description Exemple
Comment Utiliser les Tableaux Associatifs GetEnumerator Récupère un objet qui peut
() énumérer tous les
("Hello").GetEnumerator
()
(Tables de hachage) caractères d'une chaîne
Format Description IndexOf() Retourne l'index de la ("Hello").IndexOf("l")
$hash = @{} Crée un tableau hash vide première occurrence de la
$hash.GetEnumerator | sort Trie un tableau hash sur une clef chaine de comparaison
Key définie IndexOfAny() Retourne l'index de la ("Hello").IndexOfAny("l
$hash.key1 Retourne la valeur de la clef1 première occurrence de la oe")
$hash["key1"] chaine de
$hash.key1 = 1 Affecte 1 à la clef1 comparaisonReturns the
@{foo=1; bar='value2'} Crée et initialise un tableau hash index of the first
[ordered]@{a=1; b=2; c=3} Crée et trie un dictionnaire occurrence of any character
in a comparison string
[pscustomobject]@{x=1; y=2} Crée un objet privé
Insert() Insert une chaine à l'index ("Hello
spécifié d'une autre chaine World").Insert(6,
Quelques Variables PowerShell Utiles "brave ")
LastIndexOf() Recherche l'index de la ("Hello").LastIndexOf("
Pour visualiser la liste complète des variables de votre environnent dernière occurrence d'un l")
utiliser la fonction Get-Variable. caractère spécifié
AIDE : about_Automatic_Variables ; about_Preference_Variables LastIndexOfAn Recherche l'index de la ("Hello").LastIndexOfAn
Variable Description y() dernière occurrence d'un y("loe")
$$ Dernier paramètre caractère d'une chaîne
$? Statu d'exécution de la commande spécifiée
$^ Dernière commande passée PadLeft() Remplissage d'une chaîne à ("Hello").PadLeft(10)
$_, $PSItem Objet du pipe courant une longueur déterminée et
$Args Arguments de script ou de fonction qui ajoute des caractères
$Error Tableau d'erreurs d'une commande blancs à gauche (aligné à
$False Booléen pour la valeur FAUX droite de chaîne)
$ForEach Valeur courante dans une boucle foreach PadRight() Remplissage d'une chaîne à ("Hello").PadRight(10)
$HOME Répertoire lancement de PowerShell une longueur déterminée et + "World!"
$Host Référence l'application qui exécute le langage qui ajoute des caractères
PowerShell blancs à droite (aligné à
$Input Liste les objets passés en entré d'un script gauche de chaîne)
par pipe Remove() Supprime le nombre requis ("Hello
$LASTEXITCODE Code retour du dernier programme Windows de caractères à partir World").Remove(5,6)
$Matches Tableau des valeurs correspondantes par les d'une position spécifiée
opérateurs -match ou –notmatch. Replace() Remplace un caractère par ("Hello
$MyInvocation Un objet avec des informations sur la commande un autre caractère World").Replace("l",
actuelle "x")
$null Variable null Split() Convertit une chaîne avec ("Hello
$PROFILE Nom du fichier contenant votre profil des points de séparation World").Split("l")
(il n'existe pas au depart) spécifiés dans un tableau
$PSCulture Langue utilisateur pour date, heure et devises StartsWith() Test si une chaîne commence ("Hello
$PSHOME Rép. d'instal de WindowsPowerShell par un caractère spécifié World").StartsWith("He"
$PSUICulture Langue utilisateur pour les menus et le texte )
$PsVersionTable Détails de la version PowerShell Substring() Extrait les caractères ("Hello
$PWD Répertoire courant d'une chaîne World").Substring(4, 3)
$Switch Recenseur dans une déclaration switch ToCharArray() Convertit une chaîne en un ("Hello
$True Booléen pour la valeur VRAI tableau de caractères World").toCharArray()
AIDE : Preference_Variable ; about_Automatic_Variables ; about_CommonParameters ; ToLower() Convertit une chaîne en ("Hello
about_Environment_Variables ; about_Profiles ; about_Remote ; about_Scopes ; minuscules World").toLower()
about_Variables ToLowerInvari Convertit une chaîne en ("Hello
ant() minuscules à l'aide des World").toLowerInvarian
Comment Gérer les Chaines règles de casse de la
langue invariant
t()
Format Description Exemple
ToUpper() Convertit une chaîne en ("Hello
Chars() Fournit un caractère à la ("Hello").Chars(0)
majuscules World").toUpper()
position spécifiée
ToUpperInvari Convertit une chaîne en ("Hello
CompareTo() Compare une chaine avec une ("Hello").CompareTo("He ant() majuscules à l'aide des World").ToUpperInvarian
autre llo")
règles de casse de la t()
Contains() Retourne "True" si la ("Hello").Contains("ll" langue invariant
cahine de compairaison ) Trim() Supprime les caractères en (" Hello ").Trim() +
spécifié est présent dans
blanc à droite et à gauche "World"
une chaine ou si la chaine
TrimEnd() Supprime les caractères (" Hello ").TrimEnd() +
de comparaison est vide
vide à droite "World"
CopyTo() Copie une partie d'une ("User!").CopyTo(0, ,
TrimStart() Supprime les caractères en (" Hello ").TrimStart()
chaine dans une autre 6, 5)
blanc à la gauche + "World"
EndsWith() Test si la chaine termine ("Hello").EndsWith("lo"
avec la chaine spécifié )
Equals() Test si une chaine est ("Hello").Equals()
identique à une autre
chaine
7/8
Mémento Windows PowerShell
Format Description Exemple
Comment Gérer les Fichiers Test-Path Vérifier l'existence (Test-Path $filename)
d'un fichier ou d'un
Format Description Exemple
répertoire
Copy-Item Copie un fichier ou Copy-Item -Path .\test.txt -
un répertoire Destination c:\Windows
### Si le fichier de
Comment utiliser les fonctions
destination existe déjà # Une fonction se déclare comme suit avec ou sans paramètre :
Copy-Item -Path .\test.txt -
Destination c:\Windows -Force function MaFonction [($param1, $param2, …)] {
Copy-Item -Path … code de la fonction …
dossier_de_test -Destination }
c:\Windows (vide)
Copy-Item -Path
dossier_de_test -Destination Avec un bloc param ( ) au début du code composant la fonction :
c:\Windows -Recurse (avec son
contenu) function MaFonction {
Get-ChildItem Affiche le contenu Get-ChildItem "c:\Windows" param ($param1=valeur_defaut, $param2,
d'un dossier …)
Get-ChildItem La commande "Get- … code de la fonction …
ChildItem" permet de }
Cette seconde écriture est plus élégante et à la préférence de nombreux développeurs, dès
lister des fichiers lors que la déclaration des paramètres devient complexe (typage, obligatoire, affectation,
et des dossiers selon etc.)
un ou plusieurs
critères. Il est Dans certains cas, une fonction peut être considérée comme un
possible de filtrer filtre. C’est à dire qu’elle doit traiter un ensemble d’éléments qui lui
des éléments avec des sont passés en paramètre, typiquement lors de l’usage dans un
paramètres
supplémentaires comme
pipeline. Dans ce cas, et à défaut de le préciser, les instructions de
Path, Include, la fonction sont traités pour chaque élément du pipeline, ce qui
Exclude correspond à la directive “PROCESS { … }”. Toutefois, dans ce
Get-Command Affiche la liste des Get-command Get-Location – genre de traitement multiple, il peut être nécessaire d’effectuer
commandes dont les syntax quelques opérations spécifiques avant et/ou après le traitement
alias Affiche la syntaxe d'une
commande individuel des éléments. (Un peu comme si vous vouliez constituer
Get-Location Affiche le chemin du $Rep=Get-Location un tableau avec des titres/entêtes, afficher une ligne pour chaque
dossier courant élément entré, puis ajouter un pied de page). Dans ce cas, vous
Move-Item Déplace un fichier ou Move-Item -Path pourriez utiliser une structure de la forme :
un répertoire "c:\Windows\test.txt" -
Destination function MaFonction {
"C:\Users\Administrateur\Docu [ param ($param1=valeur_defaut, $param2,
ments" …) ]
Move-Item -Path "*.log" - begin { # code à exécuter au début,
Destination "c:\TEMP\"
avant les traitements des éléments }
Move-Item -Path
"c:\Windows\dossier_de_test" process { # code à exécuter sur chacun
-Destination des éléments du pipeline }
"C:\Users\Administrateur\Docu end { # code à exécuter à la fin,
ments" après le traitement de tous les éléments }
New-Item Crée un fichier ou un New-Item -Name "test.txt" - }
répertoire vide ItemType file
New-Item -Name "test.txt" - AIDE : about_Functions ; about_functions_advanced ; about_functions_cmdletbinding
ItemType file –force
New-Item -Name
"dossier_de_test" -ItemType
directory
New-Item -path "c:\windows\"
-Name "test.txt" -ItemType Suite au prochain numéro…
file
Remove-Item Supprime un fichier Remove-Item "test.txt"
ou un répertoire Remove-Item
"C:\Windows\test.txt"
Comment Avoir plus d'Information
Remove-Item
Pour plus d'informations sur l'écriture de scripts PowerShell, rendez-
"C:\Windows\dossier_de_test" vous sur le site TechNet :
-Recurse https://technet.microsoft.com/fr-fr/scriptcenter
Rename-Item Renommer un fichier Rename-Item -Path test- https://technet.microsoft.com/fr-fr/scriptcenter/dd742419.aspx
ou un répertoire 2014.txt -NewName test- https://technet.microsoft.com/fr-fr/library/hh847854.aspx
2014.log https://technet.microsoft.com/fr-fr/library/hh847856.aspx
Rename-Item -Path http://www.it-connect.fr/powershell-pour-les-debutants-4eme-partie
dossier_de_test -NewName http://www.it-connect.fr/powershell-pour-les-debutants-3eme-
dossier_de_2014
partie/#IV_Les_fonctions_Bases
Set-Location Se déplace dans les Set-Location "c:\Windows"
dossiers
http://my-powershell.fr/aide-memoire-
powershell#Sequences_drsquoechappement
8/8