Ceci est une ancienne révision du document !
Table des matières
PowerShell
PowerShell : Introduction et Guide Avancé
1. Qu'est-ce que PowerShell ?
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.
2. Installation de PowerShell :
- 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'
3. Lancement de PowerShell :
- Interface en ligne de commande : # Lancer PowerShell depuis l'invite de commande
powershell
- Interface graphique (PowerShell ISE) :
# Lancer PowerShell ISE
powershell_ise
4. Les bases de PowerShell :
- Cmdlets : # Afficher la liste des processus en cours d'exécution
Get-Process
- Variables :
$nom = 'John' Write-Host 'Bonjour, $nom !'
5. Exploration du système de fichiers :
- 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
6. Gestion des processus et des services :
- 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
7. Gestion des utilisateurs et des groupes :
- 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'
8. Automatisation des tâches :
- Scripting : # Exemple de script : sauvegarde des fichiers
$source = 'C:\Source' $destination = 'D:\Backup' Copy-Item $source -Destination $destination -Recurse
9. Gestion des fichiers et dossiers avancée :
- 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
10. Gestion des registres Windows :
- 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)'
11. Interactions réseau :
- 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
12. Gestion des données :
- 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
Annexe A : Glossaire PowerShell
- 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
Annexe B : Ressources supplémentaires
- 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/
Listes des commandes powershell
Philosophie générale des commandes PowerShell
PowerShell repose sur des cmdlets, des commandes natives conçues pour être cohérentes, lisibles et prévisibles.
Une cmdlet :
- effectue une action précise
- renvoie des objets
- s’intègre naturellement dans un pipeline
Tu ne travailles pas avec du texte brut, mais avec des entités structurées.
Syntaxe générale d’une cmdlet
Toutes les cmdlets suivent la convention :
Verbe-Nom
Exemples :
- Get-Process : récupérer des processus
- Get-Service : récupérer des services
- Set-Date : modier un paramètre système
- Remove-Item : supprimer un élément
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.
Les commandes renvoient des objets
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 :
- les propriétés (Name, Id, CPU, etc.)
- les méthodes (actions possibles)
C’est cette structure qui rend PowerShell puissant et able pour l’administration système.
Trouver de l’aide : Get-Help
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.
Rechercher des commandes : Get-Command
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…).
Alias : raccourcis utiles (mais à utiliser avec prudence)
PowerShell propose des alias pour aller plus vite :
Alias Cmdlet réelle
dir Get-ChildItem
Alias Cmdlet réelle
- ls Get-ChildItem
- cat Get-Content
- ps Get-Process
Les alias sont pratiques en console, mais à éviter dans les scripts, an de garantir lisibilité et portabilité.
Cmdlets fondamentales à connaître
Voici une sélection de cmdlets essentielles, classées par usage.
Fichiers et dossiers
| 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 |
Système et administration
| 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 |
Réseau
| Cmdlet | Rôle |
|---|---|
| Test-Connection | Tester la connectivité (ping) |
| Resolve-DnsName | Résoudre un nom DNS |
| Get-NetAdapter | Afficher les interfaces réseau |
Lecture et export
| Cmdlet | Rôle |
|---|---|
| Get-Content | Lire un fichier |
| Set-Content | Écrire dans un fichier |
| Export-Csv | Exporter vers CSV |
| ConvertTo-Json | Convertir en JSON |
Conclusion
Dans ce chapitre,
- comment sont construites les cmdlets PowerShell
- que les commandes renvoient des objets
- comment découvrir et documenter une commande
- quelles sont les cmdlets essentielles pour débuter
Ces bases sont indispensables avant d’aborder le pipeline avancé, le ltrage, le tri et l’automatisation.
