Vous avez besoin d’un moyen rapide pour surveiller les performances de votre machine Windows ? Plutôt que d’installer des outils complexes, voici un script PowerShell léger et efficace que vous pouvez écrire et exécuter en 10 minutes max !
Pourquoi ce script ?
Parfois, on a juste besoin de vérifier rapidement :
- Si le CPU est surchargé
- Combien il reste de mémoire disponible
- L’espace disque libre sur C:
- Quels sont les processus les plus gourmands
Ce script répond à ces besoins sans installation, en utilisant uniquement PowerShell.
C'est parti !
Pour commencer, on va écrire notre script dans un éditeur de texte.
# monitoring_simple.ps1
$logFile = "C:\monitoring\log_system_$(Get-Date -Format 'yyyyMMdd').log"
$monitoringDuration = 600 # 10 minutes
$interval = 5 # Toutes les 5 secondes
if (-not (Test-Path -Path (Split-Path $logFile -Parent))) {
New-Item -ItemType Directory -Path (Split-Path $logFile -Parent) | Out-Null
}
Add-Content -Path $logFile -Value "=== Début du monitoring $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') ==="
Add-Content -Path $logFile -Value "Timestamp,CPU(%),Mémoire Libre(Mo),Disque Libre(Go),Processus"
function Get-CPUUsage { (Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue | Round 2 }
function Get-FreeMemory { (Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory / 1MB | Round 2 }
function Get-FreeDiskSpace { (Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'").FreeSpace / 1GB | Round 2 }
function Get-TopProcesses { (Get-Process | Sort-Object CPU -Descending | Select-Object -First 3 | ForEach-Object { "$($_.Name)($($_.CPU.ToString('N1'))%)" }) -join ", " }
$endTime = (Get-Date).AddSeconds($monitoringDuration)
while ((Get-Date) -lt $endTime) {
$logEntry = "$(Get-Date -Format 'HH:mm:ss'),$(Get-CPUUsage),$(Get-FreeMemory),$(Get-FreeDiskSpace),$(Get-TopProcesses)"
Add-Content -Path $logFile -Value $logEntry
Write-Host "[$(Get-Date -Format 'HH:mm:ss')] CPU: $(Get-CPUUsage)%, Mémoire libre: $(Get-FreeMemory) Mo"
Start-Sleep -Seconds $interval
}
Add-Content -Path $logFile -Value "=== Fin du monitoring $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') ==="
Write-Host "✅ Monitoring terminé. Logs dans $logFile"
Ensuite, il faudra enregistrer le code dans un fichier avec l'extension .ps1
.
Comment l’utiliser ?
- Ouvrez PowerShell en admin (Win + X → Terminal Admin).
- Exécutez le fichier (par exemple avec .\monitoring_simple.ps1).
- Consultez les logs dans C:\monitoring\log_system_*.log
Vous aurez un exemple de sortie comme suit :
=== Début du monitoring 2024-05-18 14:30:00 ===
Timestamp,CPU(%),Mémoire Libre(Mo),Disque Libre(Go),Processus
14:30:05,12.5,4237.21,125.8,chrome(7.5%),Teams(3.1%),explorer(1.2%)
14:30:10,8.2,4210.54,125.8,chrome(5.1%),vscode(2.3%),svchost(0.8%)
=== Fin du monitoring 2024-05-18 14:40:00 ===
Quoi d'autre ?
Vous pouvez personnaliser ce script avec :
- Changer la durée : Modifiez
$monitoringDuration
. - Surveiller un autre disque : Remplacez
DeviceID='C:'
par'D:'
. - Ajouter d’autres métriques : Utilisez
Get-Counter
pour surveiller le réseau, les disques, etc.
Et vous ? Vous utilisez quoi pour du monitoring simple sur Windows ? Dites-le en commentaires ! 👇
Top comments (0)