====== Connaître l'espace utilisé par un dossier ====== --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/07/17 12:07// une petite fonction utile pour connaître l'espace utilisé par un dossier, seul ou avec ces sous-dossiers. function Get-FolderUsedSpace() { <# .SYNOPSIS Affiche la taille d'un dossier. .DESCRIPTION La fonction affiche l'espace occupé sur le disque par un dossier. Il est possible de choisir entre l'espace du dossier seul (les fichiers du premier niveau uniquement) ou de l'arborescence totale (en incluant les sous-dossiers). .PARAMETER Path Chemin du dossier dont l'espace utilisé doit être calculé. .PARAMETER Recurse Permet d'inclure les sous-dossiers dans le calcul de l'espace utilisé .PARAMETER HumanReadable Renvoie l'espace utilisé de manière lisible, avec l'unité (B, KB, MB, GB, TB). .EXAMPLE Get-FolderUsedSpace -Path "c:\Windows" -Recurse .OUTPUTS PSCustomObject .NOTES Crée par Nicolas THOREZ, Shyrka System .INPUTS System.String .LINK Plus d'informations sur https://www.shyrkasystem.com #> # Paramètres param ( [string]$Path = (Get-Location).Path, [switch]$Recurse = $false, [switch]$HumanReadable = $false ) # Initialisation des variables $FileList = @() $Size = 0 $Unit = "B" # Création de la liste des fichiers $FileList = Get-ChildItem -Path $Path -include * -Recurse:$Recurse -force # Calcul ForEach ($File in $FileList) { # Ajout de la taille du fichier dans le total $Size += $File.length } # Calcul de la fraction $Factor = [int][math]::Floor("$Size".Length/3) # Traitement de la lisibilité if ($HumanReadable) { # Sélection de l'unité selon la fraction switch ($Factor) { 0 { $Unit = "B" } 1 { $Unit = "KB" } 2 { $Unit = "MB" } 3 { $Unit = "GB" } default { $Unit = "TB" } } # Calcule de la taille lisible if ($Unit -ne "B") { $Divider = "1$Unit" $Size = [math]::Round($Size / $Divider, 2) } } # Création des propriétés de l'objet $Hash = [ordered]@{ Path = $Path Size = $Size Unit = $Unit } # Affichage de l'objet New-Object PSObject -Property $Hash } ~~DISCUSSION~~