[PowerShell] Taille des dossiers et sous dossiers : Get-FolderSize

 

À la suite d'une question sur les forums Technet, j'ai ressorti un de mes scripts pour l'améliorer et le mettre à disposition sur les Gallery :

https://gallery.technet.microsoft.com/Get-FolderSizeps1-036f331a?redir=0

Je pense que nous utilisons tous des outils comme Treesize ou WindirStat. Ces outils sont bien pratiques rapide et facile d'emploi.

L'idée du script est réalisée des opérations similaires en PowerShell. Le script permet de rechercher la taille des fichiers dans un dossier, juste dans le dossier et/ou également dans les sous-dossiers. Cet exemple est également intéressant et démontre la simplicité de PowerShell et il illustre des fonctions comme « Measure-Object ». Il est composé d'une première commande « get-childitem » qui va lister l'ensemble des sous-dossiers sur un nombre limité de niveaux :

Get-ChildItem -path $FolderPath -recurse -Directory -Depth $($level-1)

 

Ensuite nous réutilisons la commande « Get-ChildItem » pour rechercher les fichiers et la commande « Measure-Object » :

Get-ChildItem -path $SubFolder -filter $filter -File -recurse | Measure-Object -Sum Length

Il suffit d'insérer la deuxième commande dans une boucle qui passe en revue tous les dossiers de la première commande avec « ForEach ».

Le reste du script n'est que de la mise en forme ou de la déclaration de variable.

Si vous avez téléchargé le script, vous trouverez 4 paramètres :

FolderPath : chemin du dossier à analyser

Level : nombre de niveau de sous dossier

Unit : unité pour les tailles de fichiers (B,Kb,Mb,Gb)

Filter : filtre les fichiers par type (*.txt , *.doc*)

 

Dans le premier exemple, vous recherchez la taille du dossier « d :\tools\ » ainsi que les sous-dossiers sur 2 niveaux :

$r = .\Get-FolderSize.ps1 -FolderPath d:\tools -level

 

Par défaut le paramètre « Filter » vaut « *.* » et le paramètre « Unit » renvoie une valeur en Gb.

Dans le deuxième exemple, le dossier est un partage Windows, le nombre de niveau de sous dossier est de 2, le script recherche les fichiers Word et la taille est convertie en Kb.

.\Get-FolderSize.ps1 -FolderPath \\Server\Documents -level 2 -filter "*.doc*" -unit "kb"

 

 

Theme: 

Systeme: 

Annee: