analyser_dossier.ps1

Note de lecture générée automatiquement

Le vrai fichier est scripts/windows/analyser_dossier.ps1 (Obsidian n’affiche pas les scripts eux-mêmes). Ne modifie pas cette note : modifie le script, puis relance python3 generer_vues_obsidian.py dans le dossier scripts.

  • À quoi il sert : Tailles des fichiers/dossiers
  • Lancer (dans le dossier scripts/windows/) : .\analyser_dossier.ps1 -Chemin C:\Users\Public
  • Fiche : W03 - PowerShell
  • Retour : 00 - Tous les scripts

Code

# =============================================================================
# analyser_dossier.ps1 — Liste les fichiers/dossiers d'un chemin avec leur taille
#   (exemple de script "plus complet" du cours Windows 11, enrichi)
#
# Usage   : .\analyser_dossier.ps1 -Chemin "C:\Users\Public" [-Top 15]
# Si l'exécution est refusée : Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
# =============================================================================
param(
    [Parameter(Mandatory = $true)]
    [string]$Chemin,
    [int]$Top = 20
)
 
if (-not (Test-Path -Path $Chemin)) {
    Write-Error "Le chemin '$Chemin' n'existe pas."
    exit 1
}
 
function Obtenir-Taille($element) {
    if ($element.PSIsContainer) {
        # Taille d'un dossier = somme de tous les fichiers qu'il contient
        $somme = (Get-ChildItem -Path $element.FullName -Recurse -File -ErrorAction SilentlyContinue |
                  Measure-Object -Property Length -Sum).Sum
        if ($null -eq $somme) { return 0 } else { return $somme }
    }
    return $element.Length
}
 
$resultats = Get-ChildItem -Path $Chemin -Force -ErrorAction SilentlyContinue | ForEach-Object {
    [PSCustomObject]@{
        Nom        = $_.Name
        Type       = if ($_.PSIsContainer) { "Dossier" } else { "Fichier" }
        'Taille Mo' = [math]::Round((Obtenir-Taille $_) / 1MB, 2)
        Modifie    = $_.LastWriteTime
    }
}
 
$resultats | Sort-Object 'Taille Mo' -Descending | Select-Object -First $Top | Format-Table -AutoSize
$total = ($resultats | Measure-Object -Property 'Taille Mo' -Sum).Sum
Write-Host ("Total : {0:N2} Mo dans {1} éléments" -f $total, $resultats.Count) -ForegroundColor Green