<# CheckDirectorySize.ps1 V2 - 15/11/2011 (Auteur: Damien BENOIT) Permet de calculer la taille des répertoires en fonction d'une taille maximum spécifiée. V2 : Ajout d'une barre de progression. #> Clear $folderPath = Read-Host "Quel est le chemin ? (Exemple E:\RepPerso)" Clear $maxsize = Read-Host "Quel est la taille à ne pas dépasser (en MB) ? (Exemple 500)" Clear # Test de l'existence du répertoire $testpath = Test-Path $folderpath if(!($testpath)){ Write-Host -ForegroundColor Red "$folderpath n'existe pas !" Break } # Récupération de la date/heure pour le nom du fichier de log $date = Get-Date -uformat "%d-%m-%Y_%Hh%Mm" # Création du fichier de log Start-Transcript -path D:\Logs_scripts\CheckDirectorySize_$date.log # Chargement du module Active Directory Import-Module ActiveDirectory # Récupération des dossiers non vides $size = Get-ChildItem $folderpath | Where-Object {$_.PsIsContainer -eq $True} # Calcul du nombre de dossier non vide $total=$size.count # Boucle de recherche/calcul Foreach($elements IN $size) { $tot++ # Barre de progression Write-Progress -activity "Progression" -status "Effectué (%)" -percentcomplete ($tot/$total*100) $folder = $folderpath + "\" + $elements.Name $colItems = (Get-ChildItem $folder -Recurse | Measure-Object -property length -sum) $colItemsSum = [float]($colItems.sum/1MB) # Recherche de l'utilisateur $UserSearch = Get-ADUser -Filter {SamAccountName -like $elements} $UserName = $UserSearch.Name # Calcul de l'exces $calcul = $colItemsSum - $maxsize if($colItemsSum -ge $maxsize) { Write-Host -ForegroundColor Red "La taille du répertoire de $UserName ($elements) excede les $maxsize MB de $calcul MB, (TOTAL: $colItemsSum MB).`r" } Else { Write-Host -ForegroundColor Green "Le taille du répertoire de $UserName ($elements) est de $colItemsSum MB.`r" } } # Arret du log Stop-Transcript