Ce document présente des exercices pour maîtriser les cmdlets essentiels (gestion de fichiers, processus, services) et l'utilisation du pipeline (|) pour filtrer et trier les données.
# Afficher le dossier courant
Get-Location
# Lister le contenu du dossier
Get-ChildItem
# Lister uniquement les fichiers (pas les dossiers)
Get-ChildItem -File
# Lister les fichiers cachés (Force)
Get-ChildItem -Force
Objectif : Savoir où l'on se trouve et voir le contenu d'un répertoire (équivalent de ls ou dir).
# Créer un nouveau dossier "Projet"
New-Item -Path ".\Projet" -ItemType Directory
# Créer un fichier vide dans ce dossier
New-Item -Path ".\Projet\notes.txt" -ItemType File
# Créer un fichier avec du contenu directement
New-Item -Path ".\Projet\config.txt" -Value "Server=192.168.1.1"
Objectif : Créer une arborescence de fichiers et dossiers proprement.
# 1. Copier un fichier (Backup)
Copy-Item -Path ".\Projet\notes.txt" -Destination ".\Projet\notes.bak"
# 2. Renommer un fichier
Rename-Item -Path ".\Projet\config.txt" -NewName "settings.conf"
# 3. Déplacer un fichier vers le dossier parent
Move-Item -Path ".\Projet\notes.bak" -Destination ".\"
Objectif : Manipuler les fichiers comme dans l'explorateur Windows, mais en ligne de commande.
# Créer un fichier temporaire pour le test
New-Item -Path ".\junk.tmp" -ItemType File
# Le supprimer (demande confirmation parfois)
Remove-Item -Path ".\junk.tmp"
# Supprimer un dossier et tout son contenu sans confirmation (Recurse + Force)
# Attention : Soyez prudent avec cette commande !
Remove-Item -Path ".\Projet" -Recurse -Force
Objectif : Nettoyer et supprimer des éléments (équivalent de la corbeille, mais définitif).
# Lister tous les processus en cours
Get-Process
# Trouver un processus spécifique (ex: Notepad)
# (Ouvrez le bloc-notes avant de tester)
Get-Process -Name "notepad"
# Afficher l'ID d'un processus
(Get-Process -Name "notepad").Id
Objectif : Voir ce qui tourne sur la machine (équivalent du Gestionnaire des tâches).
Le pipeline | permet de passer le résultat d'une commande à une autre.
# Trier les fichiers par taille (Length)
Get-ChildItem | Sort-Object Length
# Trier les processus par utilisation CPU (descendant = du plus gros au plus petit)
Get-Process | Sort-Object CPU -Descending
Objectif : Ordonner les données pour les rendre lisibles.
C'est la commande la plus puissante pour trouver des informations précises.
# Trouver les fichiers plus gros que 1KB
Get-ChildItem | Where-Object { $_.Length -gt 1024 }
# Trouver les processus qui consomment plus de 100 s de CPU
Get-Process | Where-Object { $_.CPU -gt 100 }
# Trouver les services qui sont arrêtés
Get-Service | Where-Object { $_.Status -eq "Stopped" }
Objectif : Filtrer une grande liste pour ne garder que ce qui correspond à un critère.
Note : $_ représente "l'objet en cours" dans le pipeline.
# Afficher uniquement le Nom et l'ID des processus (masquer le reste)
Get-Process | Select-Object Name, Id
# Afficher uniquement les 5 premiers fichiers du dossier
Get-ChildItem | Select-Object -First 5
# Créer une liste personnalisée de services
Get-Service | Select-Object DisplayName, Status
Objectif : Nettoyer l'affichage pour ne voir que les colonnes pertinentes.
# 1. Lancez le bloc-notes (Notepad) manuellement
# 2. Vérifiez qu'il est là
$proc = Get-Process -Name "notepad"
Write-Host "Le processus tourne avec l'ID : $($proc.Id)"
# 3. Tuez-le via PowerShell
Stop-Process -Name "notepad"
Objectif : Forcer l'arrêt d'un programme (Task Kill).
Write-Host "--- Rapport Rapide Système ---"
# 1. Compter les fichiers dans le dossier Windows (juste pour l'exemple)
$nbFichiers = (Get-ChildItem -Path "C:\Windows" -File).Count
Write-Host "Fichiers dans Windows : $nbFichiers"
# 2. Trouver les 3 processus qui utilisent le plus de mémoire (WorkingSet)
Write-Host "`n--- Top 3 Mémoire ---"
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 3 Name, WorkingSet
# 3. Vérifier si un service important (ex: Spooler d'impression) tourne
$service = Get-Service -Name "Spooler"
if ($service.Status -eq "Running") {
Write-Host "`nLe service d'impression est ACTIF."
} else {
Write-Host "`nLe service d'impression est ARRÊTÉ."
}
Objectif : Combiner plusieurs commandes pour extraire des informations utiles du système.
| Verbe | Action | Exemples courants |
|---|---|---|
| Get | Récupérer/Lister | Get-ChildItem, Get-Process, Get-Service, Get-Date |
| Set | Modifier/Définir | Set-Location (cd), Set-Content |
| New | Créer | New-Item (mkdir/touch) |
| Remove | Supprimer | Remove-Item (rm/del) |
| Copy | Copier | Copy-Item (cp/copy) |
| Move | Déplacer | Move-Item (mv/move) |
| Start/Stop | Démarrer/Arrêter | Start-Service, Stop-Process |
Where-Object| Opérateur | Signification | Exemple |
|---|---|---|
-eq |
Égal (Equal) | Where-Object { $_.Name -eq "notepad" } |
-ne |
Différent (Not Equal) | Where-Object { $_.Status -ne "Running" } |
-gt |
Plus grand que (Greater Than) | Where-Object { $_.Length -gt 50 } |
-lt |
Plus petit que (Less Than) | Where-Object { $_.CPU -lt 10 } |
-like |
Ressemble à (avec *) | Where-Object { $_.Name -like "*win*" } |
Essayez de réaliser ces tâches :
Lister tous les fichiers .txt de votre dossier Documents.
Trouver le processus qui utilise le plus de CPU sur votre ordinateur actuellement.
Créer un dossier Backup, y copier tous vos scripts .ps1, puis afficher la liste des fichiers copiés triés par date de création.
Bonne pratique!