Dans cet article, nous allons voir comment créer votre premier script PowerShell, les commandes de base et des conseils. Gardez en tête que la pratique est la clé pour maîtriser PowerShell. Plus vous écriverez de scripts, plus vous comprendrez le langage et ses fonctionnalités.
Présentation du scripting PowerShell
Connaissez-vous le langage informatique PowerShell ? Né en 2006, il vient supplanter le CMD, avec des fonctionnalités plus puissantes, mais aussi un nommage des fonctions plus intuitif. PowerShell est aussi un outil d’automatisation de tâches système de Microsoft. Il est basé sur une interface en ligne de commande qui permet d’interagir avec l’ensemble des ressources du système d’exploitation Windows. Il existe plusieurs versions, la 5.2 préinstallée avec Windows ou encore la v7 multiplateforme. Vous pouvez par ailleurs facilement connaître la version PowerShell installée sur votre système.
Le scripting consiste à écrire des scripts, soit des programmes qui automatisent des tâches répétitives ou complexes. Un autre programme ou PowerShell peut appeler les scripts pour les exécuter. Son langage de script est basé sur le .NET Framework de Microsoft, ce qui lui permet d’interagir avec les ressources .NET, telles que les objets COM ou les services web.
Choisir son éditeur PowerShell
Vous pouvez utiliser n’importe quel éditeur de texte pour créer un script sous PowerShell. Néanmoins, voici la liste des principaux :
- PowerShell ISE : intégré dans Windows, il est facile à utiliser et comprend une interface graphique qui permet de manipuler les scripts à la souris.
- Visual Studio Code : éditeur de code gratuit développé par Microsoft. Il est très populaire chez les développeurs et propose des extensions pour améliorer l’expérience de développement PowerShell.
- Notepad++ : éditeur de texte open source pour Windows compatible avec de nombreux languages. Il est léger et rapide, et peut-être utilisé pour écrire tout type de scripts.
- Sublime Text : éditeur est très personnalisable et comprend des fonctionnalités avancées pour le développement PowerShell. Il est payant et compatible pour Windows, macOS et Linux.
Les principales différences résident dans le style de l’application, mais aussi dans sa facilité d’utilisation. Par exemple, certaines vous proposent une vue globale du script et d’autres une mise en couleur des variables ou encore une auto-complétion pour vous aider.
Vous pouvez aussi utiliser le Bloc-Notes de Windows pour créer votre premier script PowerShell, mais il ne vous fournira aucune aide ni aucune mise en forme particulière. Pour commencer, nous vous recommandons PowerShell ISE, installé de base sous Windows, qui vous aidera dans la rédaction.
Autoriser l’exécution de scripts
Avant de se lancer dans la création de votre premier script, vous devez autoriser l’exécution de scripts PowerShell sur votre PC. En effet, nativement, Windows interdit l’exécution de scripts PowerShell dans le but de protéger votre ordinateur contre du code frauduleux. Si vous tentez d’exécuter un script sans l’autorisation préalalble, vous aurez une erreur « Impossible de charger le fichier c:\…. car l’exécution de scripts est désactivée sur ce système » :
Vous pouvez vérifier l’état d’exécution des scripts avec la commande suivante dans une fenêtre PowerShell :
Get-ExecutionPolicy
Vous obtiendrez une des valeurs suivantes :
- Restricted : empêche l’exécution de tout script PowerShell, quelle que soit la source. Les scripts PowerShell ne peuvent être exécutés que s’ils sont signés numériquement par un éditeur de confiance ou si l’utilisateur a explicitement autorisé l’exécution du script.
- AllSigned : autorise l’exécution de scripts PowerShell qui ont été signés numériquement par un éditeur de confiance. Les scripts PowerShell provenant de sources non fiables ne peuvent pas être exécutés.
- RemoteSigned : permet l’exécution de scripts PowerShell qui ont été signés numériquement par un éditeur de confiance, ainsi que de scripts PowerShell exécutés localement sur le système. Les scripts PowerShell provenant de sources non fiables ne peuvent pas être exécutés.
- Unrestricted : autorise l’exécution des scripts PowerShell, quelle que soit leur source. Si vous exécutez un script provenant d’internet, une demande de confirmation vous est demandée.
- Bypass : désactive complètement la vérification de la politique d’exécution, ce qui permet l’exécution de tous les scripts PowerShell, qu’ils soient signés ou non. Cela peut être très dangereux si des scripts malveillants sont exécutés sur un système.
Pour pouvoir exécuter un script créé localement, nous allons définir une politique RemoteSigned, avec la commande Set-ExecutionPolicy dans une fenêtre PowerShell en administrateur :
Set-ExecutionPolicy Remote Signed
Vous êtes maintenant prêts à commencer votre premier script PowerShell !
Créer votre premier script PowerShell
Vous allez maintenant apprendre à concevoir votre premier script Powershell. Créez un fichier avec l’extension .ps1
, par exemple « monscript.ps1
» (il s’agit de l’extension des scripts PowerShell), que vous éditerez avec le bloc-note.
Ou alors, commencez à écrire directement dans la fenêtre de PowerShell ISE :
Pour bien débuter un script PowerShell, il est important de comprendre les éléments de base du langage, tels que les commandes, les variables et les fonctions. Voici ci-dessous, un exemple simple de script qui affiche la chaîne de caractères « Hello world ! » dans la console :
Tapez l’instruction suivante dans votre éditeur puis enregistrez le fichier. La commande « Write-Host » affiche une chaîne de caractères dans la console.
Write-Host "Hello world !"
Une fois que vous avez écrit votre script, vous pouvez l’exécuter en ouvrant PowerShell et en tapant le nom de votre script suivi de « .ps1 ». Par exemple, si votre script s’appelle « monscript.ps1 », vous pouvez l’exécuter en tapant la commande suivante dans la console :
.\monscript.ps1
Cela exécutera votre script et affichera les résultats dans la console :
💡 Pour vous entrainer davantage à créer des scripts, vous pouvez consulter nos exemples de scripts PowerShell.
Les composantes d’un script PowerShell
Un script PowerShell est composé de plusieurs éléments, dont voici les principaux :
Commandes
Les commandes sont des instructions qui permettent d’effectuer des actions dans PowerShell. Les commandes commencent par un verbe qui décrit l’action à effectuer, suivi d’un nom qui décrit l’objet sur lequel l’action doit être effectuée.
Voici un exemple de commande PowerShell pour lister le contenu d’un répertoire :
Get-ChildItem C:\\\\mon_repertoire
Cette commande utilise la commande Get-ChildItem
pour lister le contenu du répertoire C:\\\\mon_repertoire
. Vous pouvez remplacer C:\\\\mon_repertoire
par le chemin d’accès du répertoire que vous souhaitez lister.
Commentaires
Les commentaires commencent par le caractère dièse (#) et permettent d’expliquer le code et son fonctionnement. PowerShell ignore les commentaires lors de l’exécution du script.
Voici un exemple de commentaire en PowerShell :
# Ceci est un commentaire.
# Il ne sera pas exécuté par PowerShell.
Variables
Les variables sont des éléments du code qui permettent de stocker des valeurs. Les variables en PowerShell commencent par le signe dollar ($) et peuvent contenir des lettres, des chiffres et des caractères spéciaux.
Voici un exemple de variable en PowerShell :
$nom = "Clément"
Fonctions
Les fonctions sont des blocs de code réutilisables qui permettent d’effectuer des tâches spécifiques. Les fonctions commencent par le mot-clé « function », suivi du nom de la fonction et des paramètres d’entrée.
Voici un exemple simple de fonction PowerShell :
function Add-Numbers {
param (
[int]$a,
[int]$b
)
$result = $a + $b
return $result
}
Add-Numbers -a 3 -b 4
Cette fonction s’appelle « Add-Numbers », et prend deux paramètres : « a » et « b ». Elle ajoute ensuite les deux paramètres et retourne le résultat.
Boucles
Les boucles permettent de répéter des instructions plusieurs fois. Il existe plusieurs types de boucles en PowerShell, comme la boucle « For », la boucle « Foreach » et la boucle « While ».
Voici un exemple de boucle foreach qui affiche les noms de plusieurs fichiers :
$files = Get-ChildItem "C:\\\\Users\\\\Clement\\\\Documents"
foreach ($file in $files) {
Write-Host $file.Name
}
Dans ce script, la commande Get-ChildItem
récupère une liste de fichiers dans le dossier spécifié. La boucle foreach
parcourt chaque fichier dans la liste et la commande Write-Host
affiche le nom de chaque fichier.
Conditions
Les conditions permettent d’exécuter des instructions en fonction de certaines conditions. Il existe plusieurs types de conditions en PowerShell, comme la condition « If », la condition « Switch » et la condition « Try-Catch ».
Voici un exemple simple de condition en PowerShell :
# Entrer un nombre
$nombre = Read-Host "Entrez un nombre"
# Vérifier si le nombre est pair ou impair
if ($nombre % 2 -eq 0) {
Write-Host "$nombre est pair"
} else {
Write-Host "$nombre est impair"
}
Dans ce script, la commande Read-Host
demande à l’utilisateur d’entrer un nombre. La condition if
vérifie si le nombre est pair en utilisant l’opérateur modulo %
. Si le nombre est pair, le script affiche « est pair ». Sinon, il affiche alors « est impair ».
Pipeline
La pipeline permet de chaîner des commandes et de transmettre les résultats d’une commande à une autre. La pipeline en PowerShell utilise le caractère « | ».
Voici un exemple de pipeline PowerShell :
# Récupérer la liste des fichiers dans un dossier
Get-ChildItem -Path C:\\\\MonDossier -Recurse |
# Filtrer les fichiers pour n'inclure que ceux dont l'extension est .txt
Where-Object {$_.Extension -eq ".txt"} |
# Trier les fichiers par date de création
Sort-Object -Property CreationTime |
# Sélectionner les 10 derniers fichiers
Select-Object -Last 10 |
# Afficher le nom et la date de création de chaque fichier
ForEach-Object {Write-Host $_.Name, $_.CreationTime}
Quelques conseils et astuces pour vos scripts PowerShell
Demander de l’aide en PowerShell
La commande « Get-Help » permet d’obtenir de l’aide sur une commande spécifique. Par exemple, si vous voulez obtenir de l’aide sur la commande « Write-Host », tapez la commande suivante dans la console PowerShell :
Get-Help Write-Host
Il est également possible de demander des exemples d’utilisation d’une commande :
Get-Help Get-Service -examples
Utiliser les alias
Si vous disposez de quelques bases en CMD, alors vous pourrez retrouver la plupart des commandes que vous utilisez déjà sous PowerShell. C’est ce que l’on appelle des alias. Pour les lister, il existe une commande :
Get-Alias
Pour les plus passionnés, il est même possible de créer ses propres alias !
Bien utiliser les variables
Les variables sont des éléments du code qui permettent de stocker des valeurs. Les variables en PowerShell commencent par le signe dollar ($) et peuvent contenir des lettres, des chiffres et des caractères spéciaux. Voici comment déclarer et utiliser une variable en PowerShell :
# Déclaration d'une variable
$nom_variable = "valeur"
# Exemple d'utilisation d'une variable
Write-Host $nom_variable
Les variables en PowerShell peuvent contenir différents types de données, tels que des chaînes de caractères, des nombres, des tableaux et des objets. Voici quelques exemples de déclaration de variables en PowerShell :
# Chaîne de caractères
$nom = "John"
# Nombre
$age = 30
# Tableau
$prenoms = @("John", "Jane", "Mike")
# Objet
$personne = @{
Nom = "Doe"
Prenom = "John"
Age = 30
}
Il est également possible de modifier la valeur d’une variable en PowerShell :
$nom = "Jane"
Vous pouvez appeler les variables dans les commandes PowerShell comme ceci :
# Utiliser une variable dans une commande
$nom_fichier = "mon_fichier.txt"
Get-Content $nom_fichier
Il est important de choisir des noms de variables significatifs pour faciliter la compréhension du code. Les noms de variables en PowerShell doivent commencer par une lettre et ne doivent pas contenir d’espaces. Utilisez des majuscules pour séparer les mots dans les noms de variables (ex: $NomFichier) et ce afin de faciliter la lecture.
Profiter des modules
PowerShell apporte une nouveauté bien pratique : les modules. Un module PowerShell est une bibliothèque de cmdlets et de fonctions PowerShell. Les modules permettent de regrouper des cmdlets et des fonctions connexes dans un seul package, ce qui facilite leur utilisation. Ils peuvent être créés et partagés avec d’autres utilisateurs pour simplifier la gestion de scripts complexes ou pour automatiser des tâches spécifiques. Les modules PowerShell peuvent être installés à l’aide de la commande Install-Module
et peuvent être importés dans un script à l’aide de la commande Import-Module
. Il existe également de nombreux modules PowerShell qui disponibles en ligne et qui peuvent accomplir des tâches spécifiques.
Pour lister les modules présents sur votre PC, vous pouvez utiliser cette commande :
Get-Module -ListAvailable