Polarys

Gestion du système

Gestion des fichiers et du registre

Gestion des fichiers et du registre

PowerShell unifie l'accès aux fichiers, au registre, aux certificats et aux variables d'environnement via un système de PSDrives : des lecteurs virtuels navigables avec les mêmes cmdlets.

Gestion des fichiers

# Créer un dossier
New-Item -Path C:\Temp\MonDossier -ItemType Directory

# Copier des fichiers (avec wildcards)
Copy-Item -Path C:\Source*.log -Destination D:\Archives
# Déplacer
Move-Item -Path C:\Temp\fichier.txt -Destination C:\Archive
# Supprimer (récursif)
Remove-Item -Path C:\Temp\AncienDossier -Recurse -Force

# Lire le contenu d'un fichier
Get-Content -Path C:\Windows\System32\drivers\etc\hosts

# Écrire dans un fichier
"Ligne ajoutée le $(Get-Date)" | Add-Content -Path C:\Temp\journal.txt

# Remplacer du contenu
(Get-Content C:\config.txt) -replace 'ancien', 'nouveau' | Set-Content C:\config.txt

Recherche dans les fichiers

# Chercher du texte dans des fichiers (équivalent grep)
Select-String -Path C:\Logs*.log -Pattern "ERREUR" -CaseSensitive

# Chercher récursivement
Get-ChildItem -Path C:\Logs -Recurse -Filter *.log | Select-String -Pattern "CRITICAL"

Le registre Windows via PSDrive

# Naviguer dans le registre (HKLM = HKEY_LOCAL_MACHINE)
Set-Location HKLM:\SOFTWARE\Microsoft

# Lire une valeur de registre
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName

# Créer une clé
New-Item -Path "HKCU:\SOFTWARE\MonApp"

# Créer/modifier une valeur
Set-ItemProperty -Path "HKCU:\SOFTWARE\MonApp" -Name "Version" -Value "1.0"

# Supprimer une clé
Remove-Item -Path "HKCU:\SOFTWARE\MonApp" -Recurse

Cas concret : audit des fichiers modifiés récemment

# Fichiers modifiés dans les dernières 24h dans C:\Windows\System32
$hier = (Get-Date).AddHours(-24)
Get-ChildItem -Path C:\Windows\System32 -Recurse -File |
    Where-Object { $_.LastWriteTime -gt $hier } |
    Select-Object FullName, LastWriteTime, Length |
    Sort-Object LastWriteTime -Descending |
    Export-Csv -Path C:\Temp\fichiers-recents.csv -NoTypeInformation

Erreurs fréquentes

  • Oublier -Recurse sur Remove-Item : sans ce paramètre, PowerShell refuse de supprimer un dossier non vide.
  • Utiliser HKEY_LOCAL_MACHINE au lieu de HKLM: : dans PowerShell, les PSDrives utilisent les abréviations (HKLM:, HKCU:).
  • Set-Content vs Add-Content : Set-Content écrase le fichier, Add-Content ajoute à la fin. Confondre les deux détruit des logs.

À retenir

  • Les cmdlets *-Item et *-Content gèrent fichiers ET registre (même syntaxe, lecteur différent).
  • Select-String = grep PowerShell.
  • HKLM: et HKCU: sont les PSDrives pour le registre.
  • Toujours utiliser -WhatIf avant un Remove-Item -Recurse sur un dossier important.

Quiz de validation

Quiz - 2 questions

1. Comment accéder à HKEY_LOCAL_MACHINE dans PowerShell ?

2. Quelle cmdlet équivaut à grep pour chercher du texte dans des fichiers ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.