Ceci est une ancienne révision du document !
~~CLOSETOC~~
Connaître l'espace utilisé par un dossier
une petite fonction utile pour connaître l'espace utilisé par un dossier, seul ou avec ces sous-dossiers.
<#
.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é (o, Ko, Mo, Go, To).
.EXAMPLE
Display-FolderUsedSpace -Path "c:\Windows" -Recurse
.OUTPUTS
System.String, System.int32
.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
# 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
}
# Affichage du résultat
if ($HumanReadable)
{
# Calcul de la fraction
$Factor = [int][math]::Floor("$Size".Length/3)
# 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"
}
}
# Affiche du résultat
if ($Unit -eq "B")
{
Write-Host "$Size B"
}
else
{
$Divide = "1$Unit"
$HumanReadableSize = [math]::Round($Size / $Divide, 2)
Write-Host "$HumanReadableSize $Unit"
}
}
else
{
Write-Host $Size
}
— Nicolas THOREZ 2020/07/17 12:07
Discussion