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 relancepython3 generer_vues_obsidian.pydans le dossierscripts.
- À 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