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.
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
}
— Nicolas THOREZ 2020/07/17 12:07
Discussion