Commandes essentielles

Navigation dans le système de fichiers

# Afficher le répertoire courant
Get-Location          # ou pwd

# Changer de répertoire
Set-Location C:\Users  # ou cd C:\Users

# Aller au répertoire parent
cd ..

# Aller au répertoire personnel
cd ~

# Aller au répertoire précédent
cd -

Gestion des fichiers et dossiers

Lister le contenu

# Lister les fichiers du répertoire courant
Get-ChildItem         # ou ls / dir

# Lister avec les fichiers cachés
Get-ChildItem -Force

# Lister récursivement
Get-ChildItem -Recurse

# Filtrer par extension
Get-ChildItem -Filter "*.txt"
Get-ChildItem *.json

# Lister uniquement les dossiers
Get-ChildItem -Directory

# Lister uniquement les fichiers
Get-ChildItem -File

Créer, copier, déplacer, supprimer

# Créer un dossier
New-Item -ItemType Directory -Name "mon-dossier"
mkdir mon-dossier     # Alias pratique

# Créer un fichier
New-Item -ItemType File -Name "fichier.txt"
New-Item fichier.txt  # Version courte

# Créer un fichier avec du contenu
"Bonjour PowerShell" | Out-File fichier.txt

# Copier
Copy-Item fichier.txt copie.txt
Copy-Item -Recurse dossier/ copie-dossier/

# Déplacer / Renommer
Move-Item fichier.txt nouveau-nom.txt
Move-Item fichier.txt C:\autre-dossier\

# Supprimer
Remove-Item fichier.txt
Remove-Item -Recurse -Force dossier/   # Supprimer un dossier et son contenu

Lire et écrire dans des fichiers

# Lire le contenu d'un fichier
Get-Content fichier.txt        # ou cat fichier.txt

# Lire les 5 premières lignes
Get-Content fichier.txt -Head 5

# Lire les 3 dernières lignes
Get-Content fichier.txt -Tail 3

# Écrire dans un fichier (écrase le contenu)
"Nouveau contenu" | Out-File fichier.txt
Set-Content fichier.txt "Nouveau contenu"

# Ajouter à la fin d'un fichier
"Ligne supplémentaire" | Add-Content fichier.txt

Recherche

# Chercher du texte dans un fichier (équivalent de grep)
Select-String -Path "*.txt" -Pattern "erreur"

# Recherche récursive dans tous les fichiers
Get-ChildItem -Recurse -File | Select-String "TODO"

# Chercher un fichier par nom
Get-ChildItem -Recurse -Filter "config.json"

Variables et types de base

# Déclarer une variable
$nom = "PowerShell"
$version = 7
$actif = $true

# Afficher une variable
Write-Output $nom
echo $nom            # Alias
$nom                 # Affichage direct dans le terminal

# Interpolation de chaînes (guillemets doubles uniquement)
"Bonjour, je suis $nom version $version"
# Résultat : Bonjour, je suis PowerShell version 7

# Chaîne littérale (guillemets simples = pas d'interpolation)
'La variable $nom ne sera pas remplacée'

# Vérifier le type d'une variable
$nom.GetType()

# Variables d'environnement
$env:PATH
$env:USERNAME
$env:USERPROFILE

Gestion des processus

# Lister tous les processus
Get-Process

# Chercher un processus par nom
Get-Process -Name "node"
Get-Process node      # Version courte

# Trouver un processus qui utilise un port spécifique
Get-NetTCPConnection -LocalPort 3000

# Arrêter un processus par nom
Stop-Process -Name "node"

# Arrêter un processus par PID
Stop-Process -Id 12345

# Forcer l'arrêt
Stop-Process -Name "node" -Force

Gestion des services

# Lister les services
Get-Service

# Chercher un service
Get-Service -Name "wuauserv"   # Windows Update

# Démarrer / Arrêter un service (nécessite admin)
Start-Service -Name "wuauserv"
Stop-Service -Name "wuauserv"
Restart-Service -Name "wuauserv"

Opérateurs de comparaison

PowerShell utilise des opérateurs textuels (pas les symboles <, >) :

# Égalité
5 -eq 5          # True (equal)
5 -ne 3          # True (not equal)

# Comparaison
10 -gt 5         # True (greater than)
3 -lt 7          # True (less than)
5 -ge 5          # True (greater or equal)
5 -le 5          # True (less or equal)

# Correspondance de texte
"PowerShell" -like "Power*"       # True (wildcard)
"PowerShell" -match "^Power"      # True (regex)

# Exemple concret : filtrer les gros fichiers
Get-ChildItem | Where-Object { $_.Length -gt 1MB }

Formatage de la sortie

# Tableau (par défaut)
Get-Process | Format-Table Name, CPU, WorkingSet64

# Liste détaillée
Get-Process | Format-List *

# Exporter en CSV
Get-Process | Export-Csv processes.csv -NoTypeInformation

# Exporter en JSON
Get-Process | ConvertTo-Json | Out-File processes.json

# Affichage interactif avec grille
Get-Process | Out-GridView