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