PowerShell est un langage de script et une interface en ligne de commande développé par Microsoft pour l'automatisation des tâches et la gestion des configurations système sur les plates-formes Windows. Il offre un ensemble de commandes appelées 'cmdlets' (command lets) qui permettent d'effectuer diverses opérations sur le système.
- Vérification de la version de PowerShell : $PSVersionTable.PSVersion - Installation sur différentes versions de Windows : # Installation de PowerShell 7 sur Windows 10
iex '& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI'
- Interface en ligne de commande : # Lancer PowerShell depuis l'invite de commande
powershell
- Interface graphique (PowerShell ISE) :
# Lancer PowerShell ISE
powershell_ise
- Cmdlets : # Afficher la liste des processus en cours d'exécution
Get-Process
- Variables :
$nom = 'John' Write-Host 'Bonjour, $nom !'
- Navigation entre les répertoires : # Accéder au répertoire C:\Users
cd C:\Users
- Création de fichiers : # Créer un nouveau fichier texte
New-Item -Path .\example.txt -ItemType File
- Recherche des processus en cours d'exécution : # Rechercher les processus notepad en cours d'exécution
Get-Process -Name notepad
- Interrogation des services : # Afficher la liste des services en cours
Get-Service
- Création d'un nouvel utilisateur : # Créer un nouvel utilisateur
New-LocalUser -Name 'utilisateur1' -Password (ConvertTo-SecureString 'P@ssw0rd' -AsPlainText -Force)
- Ajout d'un utilisateur à un groupe :
# Ajouter un utilisateur à un groupe
Add-LocalGroupMember -Group 'Administrateurs' -Member 'utilisateur1'
- Scripting : # Exemple de script : sauvegarde des fichiers
$source = 'C:\Source' $destination = 'D:\Backup' Copy-Item $source -Destination $destination -Recurse
- Renommage de fichiers en masse : # Renommer tous les fichiers avec l'extension .txt en ajoutant un préfixe 'backup_'
Get-ChildItem -Path C:\Path\To\Folder -Filter *.txt | Rename-Item -NewName { 'backup_' +$_.Name }
- Suppression de fichiers/dossiers : # Supprimer un fichier
Remove-Item -Path C:\Path\To\File.txt
# Supprimer un dossier et son contenu récursivement
Remove-Item -Path C:\Path\To\Folder -Recurse
- Lecture de clés de registre : # Lire la valeur d'une clé de registre
Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion' -Name 'ProgramFilesDir'
- Modification de clés de registre :
# Modifier la valeur d'une clé de registre
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion' -Name 'ProgramFilesDir' -Value 'C:\Program Files (x86)'
- Test de connectivité :
# Vérifier la connectivité avec un hôte distant
Test-Connection -ComputerName 'example.com' -Count 4
- Récupération d'informations sur les interfaces réseau :
# Obtenir la liste des interfaces réseau
Get-NetAdapter
- Manipulation de fichiers CSV :
# Importer un fichier CSV
$data = Import-Csv -Path 'C:\Path\To\Data.csv'
# Afficher les données
$data
- Manipulation de fichiers JSON :
# Importer un fichier JSON
$data = Get-Content -Path 'C:\Path\To\Data.json' | ConvertFrom-Json
# Afficher les données
$data
- Variable : Un conteneur pour stocker des valeurs ou des objets dans PowerShell.
- Script : Un fichier texte contenant une séquence de commandes PowerShell qui peuvent être exécutées ensemble.
- Interface en ligne de commande (CLI) : Une interface utilisateur qui permet à l'utilisateur de communiquer avec le système en saisissant des commandes textuelles.
- Interface graphique utilisateur (GUI) : Une interface utilisateur qui permet à l'utilisateur d'interagir avec le système à l'aide d'éléments visuels tels que des boutons, des menus et des fenêtres.
- Automatisation : Le processus d'exécution de tâches répétitives ou complexes de manière programmée plutôt que manuelle.
- Fichier batch : Un fichier texte contenant une séquence de commandes qui peuvent être exécutées par le shell de commandes Windows (cmd.exe).
- Registre Windows : Une base de données hiérarchique utilisée par le système d'exploitation Windows pour stocker des informations de configuration, telles que les paramètres système et les informations sur les logiciels installés.
- Cmdlet : Abréviation de 'command let', il s'agit des commandes de base de PowerShell qui effectuent des actions sur le système
- Sites Web :
- Site officiel de PowerShell : [https://docs.microsoft.com/en-us/powershell/](https://docs.microsoft.com/en-us/powershell/)
- PowerShell Gallery : [https://www.powershellgallery.com/](https://www.powershellgallery.com/)
- Livres :
- 'Learn PowerShell in a Month of Lunches' par Don Jones et Jeffrey Hicks
- 'Windows PowerShell Cookbook' par Lee Holmes
- Communauté :
- PowerShell Subreddit :
[https://www.reddit.com/r/PowerShell/](https://www.reddit.com/r/PowerShell/)
- PowerShell.org : [https://powershell.org/](https://powershell.org/
PowerShell repose sur des cmdlets, des commandes natives conçues pour être cohérentes, lisibles et prévisibles.
Une cmdlet :
Tu ne travailles pas avec du texte brut, mais avec des entités structurées.
Toutes les cmdlets suivent la convention :
Verbe-Nom
Exemples :
Le verbe indique l’action, le nom indique la cible. Cette régularité te permet de deviner des commandes même sans les connaître.
Contrairement à CMD, une commande PowerShell ne renvoie pas du texte, mais des objets.
Get-Member permet d'inspecter ce qu’une commande renvoie :
1 Get-Process | Get-Member
Tu découvres :
C’est cette structure qui rend PowerShell puissant et able pour l’administration système.
PowerShell intègre sa propre documentation.
Afficher l’aide d’une commande :
1 Get-Help Get-Process
Afficher uniquement des exemples :
1 Get-Help Get-Process -Examples
Consulter la documentation complète :
1 Get-Help Get-Process -Full
👉 En pratique, Get-Help est l’outil le plus important à maîtriser pour devenir autonome.
Tu n’as pas besoin de connaître le nom exact d’une cmdlet.
Exemple :
1 Get-Command *service*
PowerShell te propose toutes les commandes liées aux services. C’est la méthode recommandée pour explorer un nouveau domaine (réseau, système, fichiers…).
PowerShell propose des alias pour aller plus vite :
Alias Cmdlet réelle
dir Get-ChildItem
Alias Cmdlet réelle
Les alias sont pratiques en console, mais à éviter dans les scripts, an de garantir lisibilité et portabilité.
Voici une sélection de cmdlets essentielles, classées par usage.
| Cmdlet | Rôle |
|---|---|
| Get-ChildItem | Lister fichiers et dossiers |
| Set-Location | Changer de dossier |
| New-Item | Créer chier ou dossier |
| Copy-Item | Copier |
| Move-Item | Déplacer |
| Remove-Item | Supprimer |
| Cmdlet | Rôle |
|---|---|
| Get-Process | Lister les processus |
| Stop-Process | Arrêter un processus |
| Get-Service | Lister les services |
| Start-Service | Démarrer un service |
| Stop-Service | Arrêter un service |
| Restart-Computer | Redémarrer la machine |
| Cmdlet | Rôle |
|---|---|
| Test-Connection | Tester la connectivité (ping) |
| Resolve-DnsName | Résoudre un nom DNS |
| Get-NetAdapter | Afficher les interfaces réseau |
| Cmdlet | Rôle |
|---|---|
| Get-Content | Lire un fichier |
| Set-Content | Écrire dans un fichier |
| Export-Csv | Exporter vers CSV |
| ConvertTo-Json | Convertir en JSON |
Dans ce chapitre,
Ces bases sont indispensables avant d’aborder le pipeline avancé, le ltrage, le tri et l’automatisation.