Power Shell
Formatrice : ZITI ILHAM
1
Introduction
· PowerShell est à la fois un nouveau shell de ligne de commande et un
langage de script. Il a été conçu comme moteur de tâches qui utilise des
applets de commande pour encapsuler des tâches que les utilisateurs
doivent effectuer.
· Dans PowerShell, vous pouvez exécuter des commandes sur des machines
locales ou distantes. Vous pouvez effectuer des tâches comme gérer des
utilisateurs et automatiser des workflows.
2
Lancer PowerShell
Le moyen le plus simple de rechercher PowerShell sur Windows 10 est de
taper PowerShell dans la barre de recherche, comme le montre la figure
Vous avez donc
- une version 64 bits de la console
PowerShell
- PowerShell ISE (environnement de
script intégré),
- une version 32 bits
3
Lancer PowerShell
· Pour lancer Powershell cliquer sur sur le raccourci « Windows PowerShell »
· Pour exécuter PowerShell en tant qu‘utilisateur de domaine et
administrateur local : Relancez la console PowerShell, mais cette fois-ci,
cliquez avec le bouton droit sur le raccourci Windows PowerShell, puis
sélectionnez Exécuter en tant qu’administrateur
4
Lancer PowerShell
· Une fois que vous avez relancé PowerShell en tant qu‘administrateur, la
barre de titre doit indiquer « Administrateur : Windows PowerShell»,
comme illustré à la figure
5
Afficher PowerShell
· Dans PowerShell, il existe plusieurs variables automatiques qui stockent des
informations d‘état. L‘une de ces variables est :
$PSVersionTable
· La sortie fournit des informations sur la version de PowerShell, ainsi que
sur votre plateforme et votre édition
6
· La structure des commandes
7
Les applets de commandes “cmdlet”
· Dans le monde Powershell, les applets de commandes (cmdlet) sont
composées d‘une paire de la forme “verbe”-“nom” destiné à en faciliter
la mémorisation.
8
Les applets de commandes “cmdlet”
· Le résultat renvoie une sorte de tableau avec des entêtes de colonnes, où
chaque ligne représente un élément.
9
Trouver des commandes
· Vous pouvez voir la liste des verbes approuvés en utilisant l‘applet de
commande Get-Verb. Les verbes sont organisés par type d‘activité et par
fonction.
10
Trouver des commandes
Trois applets de commande principales vous permettent de découvrir les
applets de commande existantes et ce qu‘elles font :
· Get-Command : L‘applet de commande Get-Command liste toutes les
applets de commande disponibles sur votre système.
· Get-Help :utilisez la cmdlet de base Get-Help pour appeler un système
d‘aide intégré.
· Get-Member: Quand vous appelez une commande,la réponse est un
objet qui contient de nombreuses propriétés.
11
Rechercher des commandes en utilisant
Get-Command
Avec Get-Command on utilisent des indicateurs pour filtrer :
· Noun : L‘indicateur -Noun cible la partie du nom de la commande.
Autrement dit, il cible tout ce qui correspond à ce qui se trouve après le
trait d‘union (-).Voici un exemple :
Get-Command -Noun NETIPADD*
Cette commande recherche toutes les applets de commande dont la partie
« substantif » commence par NETIPADD
12
Rechercher des commandes en utilisant
Get-Command
· Verb : L‘indicateur -Verb cible la partie du nom de la commande qui est
associée au [Link] pouvez combiner l‘indicateur -Noun et
l‘indicateur -Verb,voici un exemple :
Get-Command -Verb Get -Noun NETIPADD*
13
Get-Help
Une fois que l'on a repéré la commande qui nous intéresse grâce à
Get-Command, on va en toute logique se poser la question suivante :
comment s'utilise cette commande PowerShell ? C'est là
qu'intervient le cmdlet "Get-Help" puisqu'il permet d'obtenir de l'aide.
14
Get-Member
Pour explorer une commande, il y a le cmdlet "Get-Member" et son
alias "gm" qui sont à connaître. Cette commande va permettre d'obtenir
tous les membres d'une commande, c'est-à-dire toutes les propriétés
et méthodes d'une commande.
15
Get-Process
· Get-Process Permet de récupérer la liste des processus actifs sur
une machine.
16
Get-PSDrive
La commande Get-PSDrive permet de récupérer des informations sur
les différents lecteurs du système. Plusieurs types de lecteurs différents
sont remontés par cette commande:
· Les lecteurs de type "FileSystem" correspondant à vos volumes
montés sur votre système, par exemple le volume "C" où Windows
est installé, ou alors un lecteur réseau connecté sur votre machine.
· Les lecteurs de type "Registry" correspondent au Registre Windows,
en l'occurrence les ruches HKCU et HKLM
17
Get-Service
Grâce à la commande Get-Service, nous allons pouvoir récupérer des
informations sur les services présents sur la machine, ainsi que sur leur
état et leur type de démarrage
18
Test-Connection
· L'équivalent de l'éternelle commande "ping", mais à la façon de PowerShell.
Pour réaliser 4 pings à destination d'une machine, on peut spécifier son
adresse IP ou son nom DNS :
· Si l'on veut réaliser seulement 1 ping, ce qui est pratique pour
simplement tester la connectivité vers une machine, on utilisera
-Count suivi du nombre de ping à réaliser :
19
Test-Connection
On peut facilement tester plusieurs hôtes : il suffit de séparer les
cibles par virgule:
20
· Gestion fichier et dossier
21
22
Get-Location
· Afficher le chemin du dossier courant:
· Alias => "Get-Location" = "pwd"
23
Get-ChildItem
· Afficher le contenu du dossier courant:
24
Get-ChildItem
· Alias => "Get-ChildItem" = "ls" = "dir"
25
Set-Location
· Se déplacer dans les dossiers:
· Alias => "Set-Location" = "cd"
26
New-Item
·Créerun fichier vide du nom de "[Link]" dans le répertoire courant:
New-Item -Name "[Link]" -ItemType file
· Pour créer un fichier du nom de "[Link]" dans un autre répertoire comme
par exemple dans "c:\windows", il faut rajouter le chemin dans l'option
"path":
New-Item -path "c:\windows\" -Name "[Link]" -ItemType file
27
New-Item
·Créerun dossier un répertoire du nom de "dossier_de_test":
New-Item -Name "dossier_de_test" -ItemType directory
· Pour créer un dossier du nom de "dossier_de_test" dans un autre
répertoire comme par exemple dans "c:\windows", il faut rajouter le
chemin avec l'option "path":
New-Item -path "c:\windows\" -Name "dossier_de_test" -ItemType directory
28
Remove-Item
·Supprimer un dossier
qui est dans le répertoire courant:
Remove-Item « dossier_de_test »
· Pour supprimer directement un répertoire qui contient des fichiers et des
sous-dossiers sans avoir à confirmer:
Remove-Item "C:\Windows\dossier_de_test" –Recurse
· Alias => "-Recurse" = "-r―
· Alias => "Remove-Item" = "rm"
29
Move-Item
· Déplacer un dossier qui est dans le répertoire courant vers un autre
répertoire:
Move-Item -Path "dossier_de_test" -Destination "c:\Windows\"
· Déplacer un fichier qui est dans le répertoire courant vers un autre
répertoire:
Move-Item -Path "[Link]" -Destination "c:\Windows\"
30
Renam e-Item
· Renommer un dossier:
Rename-Item -Path dossier_de_test -NewName dossier_de_2022
· Renommer un fichier:
Rename-Item -Path [Link] -NewName [Link]
31
C o py-Item
· Copier un dossier vide:
Copy-Item -Path dossier_de_test -Destination c:\Windows
·Copier un dossier avec son contenu, il faut rajouter l'option "-Recurse":
Copy-Item -Path dossier_de_test -Destination c:\Windows -Recurse
· Copier un fichier:
Copy-Item -Path .\[Link] -Destination c:\Windows
·Si le fichier de destination existe déjà, il faut rajouter l'option "-Force":
Copy-Item -Path .\[Link] -Destination c:\Windows -Force
32
Test-Path
Le cmdlet Test-Path sert à tester l'existence d'un élément, généralement
un fichier ou un dossier. Par exemple pour tester l'existence du chemin
"C:\TEMP", on exécutera :
33
· Partager des dossiers
34
Partager des dossiers
Nous allons voir maintenant comment créer un dossier partagé sous
PowerShell. Il faut le faire comme avec l‘interface graphique en 3 étapes :
1. Créez un dossier classique.
2. Créez le partage.
3. Configurez les droits de partage.
35
Créer le partage
· Pour partager le dossier C:\SAUVEGARDE en créant un nom de
partage Sauvegarde et en donnant le contrôle total au
groupe Administrateurs.
New-SmbShare -Name Sauvegarde -Path C:\SAUVEGARDE -FullAccess
Administrators
36
Configurer les droits de partage
Nous pouvons modifier les droits de partage en rajoutant les droits de
lecture à tout le monde en tapant la commande suivante :
Grant-SmbShareAccess -Name Sauvegarde -AccountName "Tout le Monde" -
AccessRight Read
On peut mettre comme droit (AccessRight) :
· Full : contrôle total ;
· Change : modifier ;
· Read : lecture ;
· Custom :personnalisé.
37
Lister les partages
·Pourafficher la liste des partage :
Get-SmbShare
38
Lister les autorisations
·Pourlister les autorisations sur le partage:
Get-SmbShareAccess NomPARTAGE
39
· Définir une adresse IP
40
41
Lister les cartes réseaux
Permet de repérer le numéro d’index de la carte que l‘on souhaite modifier.
Ce numéro sera utile lors de la phase de configuration.
Deux choix s‘offrent à vous :
· Get-NetIPInterface (Lister les interfaces IP)
· Get-NetAdapter (Obtenir les propriétés basiques des adaptateurs réseaux)
42
Configuration d’une nouvelle adresse IP
Par exemple, pour ajouter l‘adresse IP « [Link]/24 » à l‘interface ayant
l’index 12 la commande est :
New-NetIPAddress -InterfaceIndex 12 -IPAddress [Link] -PrefixLength 24
-DefaultGateway [Link]
· InterfaceIndex :Numéro d‘index de la carte à modifier ,il est possible
d‘utiliser à la place -InterfaceAlias suivit du nom de l‘interface si vous
préférez au numéro d‘index)
· IPAddress :Adresse IP à attribuer à la carte
· PrefixLength :Longueur du masque de sous réseau
· DefaultGateway :Passerelle par défaut
43
Configuration d’une nouvelle adresse IP
· Note :Il existe également la commande Set-NetIPAddress,qui permet
de modifier la configuration d‘une IP déjà existante dans les paramètres de
la carte.
44
Activer/Désactiver le D H C P sur une carte
Pour activer/désactiver le DHCP sur une carte utiliser la commande :
Set-NetIPInterface -InterfaceIndex 12 -Dhcp {Enabled/Disabled}
45
Supprimer L’ adresse IP
Si une adresse IP est déjà en place sur la carte, elle ne sera pas écrasée par celle
que nous venons d‘ajouter, il faut donc supprimer l‘ancienne.
Imaginons que sur ma carte d‘index 12, j‘ai une ancienne adresse IP qui est
« [Link]/16 » et que je souhaite la supprimer :
Remove-NetIPAddress -InterfaceIndex 12 -IPAddress [Link] -PrefixLength
16 -DefaultGateway [Link]
46
Ajout d’un D N S
Pour ajouter un serveur DNS « [Link] » sur notre carte
Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses [Link]
Pour la vérification :
Get-DnsClientServerAddress -InterfaceIndex 12
47
Vérification des paramètres
Pour vérifier que la configuration de la carte réseau est correcte, on utilise la
commande suivante :
Get-NetIPConfiguration
48
· Renommer une machine Windows
49
Renommer une machine Windows
Pour renommer le serveur avec Rename-Computer, il suffit de spécifier le
paramètre -NewName, suivi du nom que l'on souhaite, cela donne la
commande suivante :
Rename-Computer -NewName « PC01«
Pour la prise ne charge de la modification il faut redémarrer le serveur :
Restart-Computer
Au redémarrage de la machine, on peut vérifier que le nom est changé grâce à
la commande hostname .
50
Get-WmiObject
· Parametre machine
· Cpu
· Ram D D
51
Bios
Pour récupérer les information du BIOS utiliser la commande :
Get-WmiObject -Class Win32_BIOS
52
Processeur
Pour récupérer les information du Processeur utiliser la commande:
Get-WmiObject -Class Win32_Processor
53
Système
Pour récupérer les information du Système utiliser la commande:
Get-WmiObject -Class Win32_ComputerSystem
54
Système d’exploitation
Pour récupérer les information du Système d‘exploitation utiliser la
commande:
Get-WmiObject -Class Win32_OperatingSystem
55
Espace disque
Pour récupérer les information du Espace disque utiliser la commande:
Get-WmiObject -Class Win32_LogicalDisk
56
· Gestion groupe et utilisateur
57
· Add-LocalGroupMember — Ajouter un utilisateur au groupe local
🞂 Disable-LocalUser — Désactiver un compte d‘utilisateur local
· Enable-LocalUser — Activer un compte d‘utilisateur local
· Get-LocalGroup — Afficher les préférences du groupe local
· Get-LocalGroupMember — Afficher la liste de tous les membres du groupe local
· Get-LocalUser — Afficher les préférences d‘un compte d‘utilisateur local
· New-LocalGroup — Créer un nouveau groupe local
· N ew-LocalUser — C réer un nouveau compte d‘utilisateur local
· Remove-LocalGroup — Supprimer un groupe local
· Remove-LocalGroupMember — Supprimer un membre d‘un groupe local
· Remove-LocalUser — Supprimer un compte d‘utilisateur local
· Rename-LocalGroup — Renommer un groupe local
· Rename-LocalUser — Renommer un compte d‘utilisateur local
· Set-LocalGroup — Modifier les paramètres d‘un groupe local
🞂 Set-LocalUser — Modifier les paramètres de compte d‘un utilisateur local
58
Créer u n utilisateur local
La commande New-LocalUser peut créer les types de comptes d‘utilisateur
suivants :
· Comptes d‘utilisateur locaux Windows
· Comptes Microsoft
· Comptes Azure Active Directory
Note: Lorsque vous créez un compte d‘utilisateur local, ne tapez jamais le mot
de passe en texte simple ; convertissez-le toujours en une chaîne sécurisée à
l‘aide du paramètre AsSecureString ou ConvertTo-SecureString.
59
Créer u n utilisateur local
· Comptes d’utilisateur locaux
$UserPassword = Read-Host -AsSecureString
New-LocalUser "NomUtilisateur" -Password $UserPassword -Description
"test utilisateur "
60
Créer u n utilisateur local
· Comptes Microsoft
New-LocalUser -Name "MicrosoftAccount\SomeAccount@[Link]" -
Description "Microsoft Account"
· Compte local lié à votre Azure A D
New-LocalUser -Name "AzureAD\Utiliateur@[Link]" -Description
"Azure AD Account‖
61
Supprimer u n compte d’utilisateur
Pour supprimer un compte d‘utilisateur local, utilisez le cmdlet Remove-
LocalUser :
Remove-LocalUser -Name NomUtilisateur -Verbose
62
Ajouter un groupe local
Pour créer un nouveau groupe :
New-LocalGroup -Name 'NomGroupe' -Description ‗Description du Groupe'
63
Ajouter des utilisateurs à un groupe local
Pour ajouter un utilisateur (ou un groupe) à un groupe local, utilisez le cmdlet
Add-LocalGroupMember.
Add-LocalGroupMember -Group ‗NomGroupe' -Member (‗utilisateur',‘groupe') -
Verbose
64
Afficher les membres d’un groupe
Pour établir la liste de tous les membres d‘un groupe local particulier :
Get-LocalGroupMember -Group 'NomGroupe'
65
· Manipuler la date et l‘heure
66
Récupérer la date
Pour récupérer la date la commande est :
Get-Date
Remarque : Avec le paramètre Format, nous allons pouvoir le personnaliser en
jouant avec les lettres "m", "d", "y", "h", "s", "f" où la casse est
importante et impacte le résultat retourné.
67
Calculer une date avec AddDays
Pour calculer une date, nous allons utiliser la méthode AddDays() qui
s'applique directement à Get-Date et qui attend un nombre comme valeur. Si
le nombre est positif, le nombre de jours sera ajouté à la date du jour, s'il est
négatif, il sera soustrait et la date calculée sera retournée.
Pour soustraire 90 jours à la date du jour, cela nous donne :
(Get-Date).AddDays(-90)
68
Calculer une date avec AddDays
Exemple:
Ce qui retourne :
69
Modifier la date et l'heure
· La commande Set-Date permet de modifier la date et l'heure sur notre
système.
· Pour utiliser cette [Link] va utiliser le paramètre -Date et
préciser la date et l'heure souhaité[Link]:
Set-Date -Date " 15/05/2022 17:52"
70
Modifier la date et l'heure
· Pour changer seulement la date
Set-Date -Date "27/09/2022"
·De la même façon, on peut ajuster l'heure sans modifier la date :
Set-Date -Date "18:00"
71
· Gestion des paquets
72
Introduction
· PowerShell Package Management vous permet de rechercher, d'installer, de
mettre à jour et de désinstaller des modules PowerShell et d'autres
packages.
· [Link] est la source par défaut pour les modules
PowerShell. Vous pouvez également parcourir le site pour rechercher les
packages disponibles, commander et prévisualiser le code.
73
Trouver un module par nom
Find-Module -Name <Name>
74
Trouver un module par nom
Pour trouver un module qui se termine par DSC par
exemple
Find-Module -Name * D S C
75
Installer/ Désinstaller un module
· Installer un module par nom
Install-Module -Name <name>
· Désinstaller un module
Uninstall-Module -Name <Name>
76
Mettre à jour un module
· Pour mettre à jour un module par nom utilser la commande:
Update-Module -Name <Name>
77
· Les Va r i a b l e s
78
Les variables
Une variable est un emplacement dans la mémoire d'un ordinateur utilisé
pour stocker des données, généralement destinées à être référencées et
manipulées dans un programme.
Les variables dans PowerShell peuvent stocker les résultats des commandes et
des expressions.
Les variables dans PowerShell sont référencées à l'aide du signe dollar $ suivi
d'un nom de variable valide.
79
Lire et Ecrire
80
Write-Host
L'objectif principal de l'applet de commande Write-Host est de produire une sortie pour
l'affichage uniquement (hôte), telle que l'impression de texte en couleur
Read-Host
L'applet de commande Read-Host lit une ligne d'entrée à partir de la console,
Vous pouvez l'utiliser pour demander une saisie à un utilisateur.
-AsSecureString : orsque vous utilisez ce paramètre, la sortie de la cmdlet Read-
Host est un objet SecureString ([Link]).
82
Les opérateurs de comparaison
Égalité
Correspondance
Endiguement
· Les C onditions
87
· Un bloc de structure conditionnelle commence toujours par une
instruction "If" et elle sera éventuellement suivie par une ou plusieurs
instructions Else/ElseIf.
· On peut traduire ces trois instructions :
- If = Si...
- Else = Sinon...
- ElseIf = Sinon si...
On peut avoir une instruction "If" seule mais ce n'est pas possible pour les
instructions Else et ElseIf.
If et ElseIf peuvent inclure une ou plusieurs conditions, alors que Else
n'accepte pas de condition (il s'applique lorsque toutes les conditions sont
fausses).
88
Condition If
· La syntaxe d'une structure conditionnelle If simple est la suivante :
If (condition)
{
# bloc de code (instructions)
}
· La partie "condition" va permettre de tester une ou plusieurs conditions.
Dans le cas où la condition se vérifie, alors le bloc de code sera exécuté.
Ce bloc de code peut contenir un autre If (conditions If imbriquées), une
boucle d'un autre type, ou tout autre commande : il n'y a pas de restriction
à ce niveau-là.
89
Condition If
Exemple : Le script suivant permet de déterminer si une valeur entrée par
l‘utilisateur est la lettre A
$var = Read-Host "Entrez un caractère"
If ($var -eq 'A')
{
Write-O utput "Le caractère saisi par l'utilisateur est un 'A'"
}
· Le résultat si on entre la valeur A est
· Si on entre la valeur B est
90
Condition If / Else
· À l‘instruction If peut être associée la clause Else. Cette clause permet en
cas de retour d‘une valeur False d‘orienter le traitement vers un second
bloc d‘instructions.
If (condition)
{
# Bloc d'instructions 1
}
Else
{
# Bloc d'instructions 2
}
91
Condition If / Else
Prenons l‘exemple de tout à l'heure, on va ajouter une condition
supplémentaire à cette phrase :Si $var est également à A
$var = Read-Host "Entrez un caractère"
If ($var -eq 'A')
{
Write-O utput "Le caractère saisi par l'utilisateur est un 'A'"
}
else {
Write-Output "Oups !"
}
92
Condition If / ElseIf / Else
ElseIf est destiné à être utilisé avec If. Il indique que « l‘expression dans cette
construction sera évaluée si l‘instruction If précédente a pour valeur False ».
Comme If, ElseIf peut accepter une expression. Il est donc pratique de
considérer ElseIf comme un if secondaire.
If (condition)
{
# Bloc d'instructions 1
}
ElseIf (condition)
{
# Bloc d'instructions 2
}
Else
{
# Bloc d'instructions 3
}
93
Condition If / ElseIf / Else
$var = Read-Host "Entrez un caractère"
If ($var -eq 'A')
{
Write-Output "Le caractère saisi par l'utilisateur est un 'A'"
}
Elseif ($var -eq ‗B')
{
Write-Output "Le caractère saisi par l'utilisateur est un ‗B'"
}
else {
Write-Output "Oups !"
}
94
Double condition avec If et -or / -and
· L'exemple précédent à base If/ElseIf/Else a l'avantage de permettre
d'exécuter un bloc de code différent en fonction de si $var= ‗A‘ ou $var =
‗B‘.N ous pourrions avoir besoin d'exécuter le même code que $var soit
égal à ‗A‘ ou ‗B‘.
· Il suffit d'inclure deux conditions à tester dans l'instruction "If" à l'aide -
or ("ou"). Ceci va permettre de tester si l'une des deux conditions est
vraie.
· Si vous souhaitez que les deux soient vraies,vous devrez utiliser -and
(et) :tout en sachant que le mix des deux est possible.
$var = Read-Host "Entrez un caractère"
If (($var -eq 'A‗) -or ($var -eq ‗B'))
{
Write-Output "Le caractère saisi par l'utilisateur est un 'A‗ ou ‗B‘"
}
else {
Write-Output "Oups !"
86
}
Double condition avec If et -or / -and
· Voici un autre exemple avec "-and" où l'on va tester la valeur de deux
variables.
$compteur1 = Read-Host "Entrez le premier numéro"
$compteur2 = Read-Host "Entrez deuxième numéro"
If (($compteur1 -eq 10) -and ($compteur2 -eq 20))
{
Write-Output "Les deux compteurs sont valides !"
}
96
opérateurs de comparaison
Opérateur Définition
-eq est égal à
-ne n'est pas égal à
-gt est supérieur à
-ge est supérieur ou égal à
-lt est inférieur à
-le est inférieur ou égal à
97
· Les Boucles
98
Introduction
· Une boucle est une séquence d'instructions répétée continuellement
jusqu'à ce qu'une certaine condition soit atteinte.
· existe exactement 5 boucles différentes en PowerShell, 4 d‘entre elles sont
issue de .NET et une est une cmdlet, j‘ai nommé: foreach, while, do
while,for et ForEach-Object
99
F O R (Pour)
· En PowerShell, la boucle "For" s'appuie sur la syntaxe suivante :
For (<état initial>;<condition de répétition>;<incrémentation>)
{
<Si la condition est vraie, on exécute ce bloc d'instructions>
}
<Si la condition est fausse, la boucle for se termine et le script continue...>
· Lorsque l'on utilise une boucle for, on suit la logique suivante : on indique
une valeur de départ (état initial), une valeur cible dans la condition de
répétition et on incrémente la valeur à chaque tour de boucle (à chaque
itération) :on peut incrémenter de 1, de 2, de 10, etc... au choix.
10
0
F O R (Pour)
Exemple: On peut se dire que l'on part de la valeur 0 et que, tant que la
valeur est inférieure strictement à 5, on exécute le bloc d'instruction de la
boucle "For", en augmentant de +1 à chaque itération.
for ($i = 0; $i -lt 5; $i ++)
{
Write-Output "La valeur est $i "
}
Ce qui va donner le résultat suivant :
10
1
F O R (Pour)
· Exemple : Imaginons que l'on ait un tableau de chaînes de caractères
(string) et que l'on souhaite exécuter une action sur chaque valeur du
tableau, sans connaître à l'avance le nombre d'éléments du tableau, on peut
s'appuyer sur la propriété Length.
· On va définir la variable $langages et lui attribuer des valeurs (cela pourrait
être dynamique). Grâce à $[Link]
$langages = @("PowerShell","Python","PHP","JavaScript","C-Sharp")
For ($i=0;$i -lt $[Link];$i++)
{
Write-Output "Le meilleur langage de programmation est $($langages[$i])"
}
10
2
ForEach
ForEach a deux significations différentes dans PowerShell. L'un est un mot-
clé et l'autre est un alias pour l' applet de commande ForEach-Object.
Le premier est décrit ici.
Cet exemple montre comment imprimer tous les éléments d'un tableau sur
l'hôte de la console:
$Names = @('Am y', 'Bob', 'Celine', 'David')
ForEach ($Nom in $Names)
{
Write-Host "Hi, my name is $Nom!"
}
94
while (Tandis que)
· Une boucle while évalue une condition et si true exécute une [Link]
que la condition est vraie, l'action continuera d'être effectuée.
while (condition)
{
code_block
}
104
while (Tandis que)
L'exemple suivant crée une boucle qui comptera de 10 à 0
$i = 10
while ($i -ge 0)
{
$i
$i--
}
105
Do-Loops (Faire)
Les Do-Loops sont utiles lorsque vous voulez toujours exécuter au moins
une fois un bloc de code. Une Do-Loops évaluera la condition après
l'exécution du codeblock, contrairement à une boucle while qui le fait avant
d'exécuter le [Link] pouvez utiliser les boucles de deux manières:
· Boucle tant que la condition est vraie:
Do
{
code_block
} while (condition)
· Boucle jusqu'à ce que la condition soit vraie, en d'autres termes, boucle
pendant que la condition est fausse:
Do
{
code_block
} until (condition)
106
Do-Loops (Faire)
· Exemple:
$i = 0
Do {
$i++
"Number $i"
} while ($i -ne 3)
107
ForEach
· Cet exemple montre comment capturer la sortie d'une boucle ForEach:
$Numbers = ForEach ($Nombre in 1..20)
{
$Nom bre # Alternatively,Write-Output $Number
}
$Numbers = @() ForEach ($Number in 1..20)
{
$Numbers += $Number
}
108
ForEach-Object
· L' ForEach-Object fonctionne de manière similaire à l'instruction foreach ,
mais tire son entrée du pipeline.
$object |ForEach-Object
{
code_block
}
$names = @("Any","Bob","Celine","David")
$names |ForEach-Object
{
"Hi, my name is $_!"
}
109
Continuer
L'opérateur Continue fonctionne dans les
boucles For , ForEach , While et Do Il ignore l'itération actuelle de la boucle,
en sautant au sommet de la boucle la plus interne.
$i =0
while ($i -lt 20) {
$i++
if ($i -eq 7) { continue }
Write-Host $I
}
Le résultat ci-dessus produira 1 à 20 sur la console mais manquera le numéro 7.
110
Pause
L'opérateur de break sortira immédiatement d'une boucle de programme. Il
peut être utilisé dans les boucles For ,ForEach ,While et Do ou dans une
instruction Switch .
$i = 0
while ($i -lt 15) {
$i++
if ($i -eq 7) {break}
Write-Host $i
}
111
Reference
· [Link]
else-et-elseif/
· [Link]
· [Link]
paquets
· [Link]
partie/
· [Link]
taches-avec-des-scripts-powershell-sur-windows-server/6527585-
gerez-vos-fichiers-avec-powershell
· [Link]
· [Link]
· [Link]
· [Link]
9782409039645/les-operateurs
112