Dans le bon temps, nous avions accès à la propriété « Size » d’un objet ‘Dossier’ avec le FileSystemObject (le ‘FSO’) . Dans PowerShell (que j’aime bien quand même) la propriété n’est plus aussi simplement accessible. Je me suis fait une petite fonction toute simple pour la retrouver …
La ligne de code principale est la suivante :
(Get-ChildItem -Path "C:\mesScripts" -Recurse | measure-object Length -sum).Sum
C’est bien jolie et fonctionnel mais à caser dans une boucle ou une condition, ça prend de la place … Me fallait donc faire ma petite fonction pour rendre ça plus fonctionnel, la voilà :
Function ArboSize([string]$FolderPath, [string]$frmt)
{
$MySize = (Get-ChildItem -Path $FolderPath -Recurse | measure-object Length -sum).Sum
Switch ($frmt) {
kb {Return [double]($MySize/1KB)}
mb {Return [double]($MySize/1MB)}
gb {Return [double]($MySize/1GB)}
tb {Return [double]($MySize/1TB)}
default {Return [double]$MySize}
}
}
Il suffit d’appeler la fonction comme suit :
ArboSize <chemin> <format>
format disponnible : « kb » – « mb » – « gb » – « tb ». Si omis, le résultat sera en bits. Cette option est à choisir si vous devez effectuer une/des opération(s) arithmétique.
Aller, un petit exemple pour bien situer. La 2ème ligne, c’est pour formater la sortie avec 2 chiffres après la virgule (1,23)
$FolderSize = ArboSize "C:\mesScripts" "mb"
"{0:N2}" -f $FolderSize