# Vérifie les prérequis locaux avant de lancer le lab (Windows). # Fait par AcadéNice - https://acadenice.fr/ $ErrorActionPreference = "Continue" $fail = 0 function OK ($m) { Write-Host "[ OK ] $m" } function KO ($m) { Write-Host "[FAIL] $m"; $script:fail = 1 } function WARN ($m) { Write-Host "[WARN] $m" } Write-Host "Vérification des prérequis" Write-Host "" try { $v = docker --version; OK "docker : $v" } catch { KO "docker absent" } try { docker compose version | Out-Null; OK "docker compose v2 présent" } catch { KO "docker compose v2 absent" } try { docker info | Out-Null; OK "daemon docker joignable" } catch { KO "daemon docker inaccessible" } try { wsl --version | Out-Null; OK "WSL2 présent" } catch { WARN "WSL2 non détecté" } $wslConfig = "$env:USERPROFILE\.wslconfig" if (Test-Path $wslConfig) { if ((Get-Content $wslConfig -Raw) -match "nestedVirtualization\s*=\s*true") { OK ".wslconfig : virtualisation imbriquée activée" } else { WARN ".wslconfig : ajouter 'nestedVirtualization=true' sous [wsl2]" } } else { WARN "$wslConfig absent - créez-le avec [wsl2] / nestedVirtualization=true" } $ram = [math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1GB) if ($ram -ge 16) { OK "RAM $ram Go" } elseif ($ram -ge 12) { WARN "RAM $ram Go (minimum)" } else { KO "RAM $ram Go insuffisante" } $freeGB = [math]::Round((Get-Item $PSScriptRoot).PSDrive.Free / 1GB) if ($freeGB -ge 150) { OK "Disque libre $freeGB Go" } elseif ($freeGB -ge 80) { WARN "Disque libre $freeGB Go (juste le minimum)" } else { KO "Disque libre $freeGB Go insuffisant" } Write-Host "" if ($fail -eq 0) { Write-Host "Prérequis critiques : OK." ; exit 0 } Write-Host "Prérequis manquants. Voir docs\etudiant\fr\00-prerequis.md" exit 1