tools.rdr-it.comScriptsEspace disque multi-serveurs

💾 Espace disque multi-serveurs

Rapport espace disque sur une liste de serveurs Windows

powershellScript

Rapport espace disque multi-serveurs

Collecte l'espace disque sur plusieurs serveurs Windows et génère un rapport HTML/CSV.

Script

# espace-disque-serveurs.ps1 — Rapport disque multi-serveurs
param(
    [string[]]$Servers       = @($env:COMPUTERNAME),
    [string]$ServersFile     = "",
    [int]$WarnPercent        = 80,
    [int]$CritPercent        = 90,
    [string]$ExportHtml      = "C:\rapports\espace-disque.html",
    [string]$ExportCsv       = "",
    [string[]]$ExcludeDrives = @("A", "B")
)

── Lecture liste serveurs ────────────────────────────────────

if ($ServersFile -and (Test-Path $ServersFile)) { $Servers = Get-Content $ServersFile | Where-Object { $_ -match '\S' -and $_ -notmatch '^#' } }

Write-Host "🖥️ Rapport espace disque — $(Get-Date -Format 'dd/MM/yyyy HH:mm')" -ForegroundColor Cyan

Write-Host " Serveurs : $($Servers.Count)"

── Collecte des données ──────────────────────────────────────

$AllDisks = foreach ($Server in $Servers) { Write-Host " Interrogation : $Server..." -NoNewline

try {

$Disks = Get-WmiObject -Class Win32_LogicalDisk ` -ComputerName $Server ` -Filter "DriveType=3" ` -ErrorAction Stop

foreach ($Disk in $Disks) {

$Letter = $Disk.DeviceID.TrimEnd(":") if ($Letter -in $ExcludeDrives) { continue }

$TotalGB = [math]::Round($Disk.Size / 1GB, 2)

$FreeGB = [math]::Round($Disk.FreeSpace / 1GB, 2) $UsedGB = [math]::Round(($Disk.Size - $Disk.FreeSpace) / 1GB, 2) $UsedPct = if ($TotalGB -gt 0) { [math]::Round(($UsedGB / $TotalGB) * 100, 1) } else { 0 }

[PSCustomObject]@{

Serveur = $Server Lecteur = $Disk.DeviceID Label = $Disk.VolumeName TotalGB = $TotalGB UtiliséGB = $UsedGB LibreGB = $FreeGB "Utilisé%" = $UsedPct Statut = if ($UsedPct -ge $CritPercent) { "CRITIQUE" } elseif ($UsedPct -ge $WarnPercent) { "ALERTE" } else { "OK" } } } Write-Host " ✓ ($($Disks.Count) lecteur(s))" -ForegroundColor Green

} catch {

Write-Host " ✗ Erreur : $_" -ForegroundColor Red [PSCustomObject]@{ Serveur = $Server; Lecteur = "N/A"; Label = ""; TotalGB = 0 UtilisésGB = 0; LibreGB = 0; "Utilisé%" = 0; Statut = "ERREUR" } } }

── Résumé console ────────────────────────────────────────────

$AllDisks | Format-Table -AutoSize Serveur, Lecteur, Label, @{N="Total (Go)";E={$_.TotalGB}}, @{N="Libre (Go)";E={$_.LibreGB}}, @{N="Utilisé %";E={"$($_.'Utilisé%')%"}}, Statut

$Critiques = $AllDisks | Where-Object { $_.Statut -eq "CRITIQUE" }

$Alertes = $AllDisks | Where-Object { $_.Statut -eq "ALERTE" } Write-Host "`n📊 $($AllDisks.Count) lecteurs — CRITIQUE: $($Critiques.Count) — ALERTE: $($Alertes.Count)"

── Export CSV ────────────────────────────────────────────────

if ($ExportCsv) { $AllDisks | Export-Csv -Path $ExportCsv -NoTypeInformation -Encoding UTF8 Write-Host "📄 CSV : $ExportCsv" -ForegroundColor Green }

── Export HTML ───────────────────────────────────────────────

if ($ExportHtml) { $Date = Get-Date -Format "dd/MM/yyyy HH:mm" $Rows = $AllDisks | ForEach-Object { $pct = $_."Utilisé%" $bg = if ($_.Statut -eq "CRITIQUE") { "#ffe0e0" } elseif ($_.Statut -eq "ALERTE") { "#fff3cd" } else { "#e8f5e9" } $bar = if ($pct -ge $CritPercent) { "danger" } elseif ($pct -ge $WarnPercent) { "warning" } else { "success" } @" <tr style="background:$bg"> <td><b>$($_.Serveur)</b></td> <td>$($_.Lecteur)</td><td>$($_.Label)</td> <td style="text-align:right">$($_.TotalGB) Go</td> <td style="text-align:right">$($_.LibreGB) Go</td> <td> <div style="background:#ddd;border-radius:4px;overflow:hidden;width:120px;display:inline-block"> <div style="width:${pct}%;background:$(if($bar -eq 'danger'){'#dc3545'}elseif($bar -eq 'warning'){'#ffc107'}else{'#28a745'});height:16px;color:white;font-size:11px;text-align:center;line-height:16px">${pct}%</div> </div> </td> <td><b>$($_.Statut)</b></td> </tr> "@ }

$Html = @"

<!DOCTYPE html><html lang="fr"><head><meta charset="UTF-8"> <title>Espace Disque — $Date</title> <style>body{font-family:Arial;margin:20px}table{border-collapse:collapse;width:100%} th,td{border:1px solid #ddd;padding:8px}th{background:#2c3e50;color:white} h1{color:#2c3e50}</style></head><body> <h1>🖥️ Rapport Espace Disque</h1> <p>Généré le $Date — $($Servers.Count) serveur(s) — $($AllDisks.Count) lecteur(s)</p> <table><tr><th>Serveur</th><th>Lecteur</th><th>Label</th><th>Total</th> <th>Libre</th><th>Utilisation</th><th>Statut</th></tr> $($Rows -join "`n") </table></body></html> "@ $Html | Out-File -FilePath $ExportHtml -Encoding UTF8 Write-Host "🌐 HTML : $ExportHtml" -ForegroundColor Green }

Utilisation

# Serveur local
.\espace-disque-serveurs.ps1

Liste de serveurs avec seuils personnalisés

.\espace-disque-serveurs.ps1 -Servers "SRV01","SRV02","SRV03" -WarnPercent 75 -CritPercent 85

Depuis un fichier (un serveur par ligne)

.\espace-disque-serveurs.ps1 -ServersFile "C:\conf\serveurs.txt" -ExportHtml "C:\rapports\disques.html"
🔧 Ouvrir tools.rdr-it.com — application complète →

Plus de 40 outils AdminSys gratuits · SSL · DNS · Docker · Nginx · SSH · Mermaid · et plus