Question [Script] Script Taille d'un répertoire

Plus d'informations
il y a 14 ans 6 mois #5246 par Alan Pinard
Bonjour à tous,

Ce script permet de récupérer le chemin et la taille des répertoires et en option des sous répertoires.



[code:1]

$RootFolderPath = \"D:\Data\"
$ExportFile = \"C:\Folder\\"+(Get-Date -UFormat %Y%m%d-%H%m%S)+\"_FolderSize.csv\"
$CSVHeaders = \"Name,Size\"
$Recurse = \"False\" #Fait une recherche recursive si elle est setter a True

If((Test-Path $RootFolderPath) -imatch \"False\"«»){Write-Warning \"Directory does not Exist! Please enter a valid directory\"; Break}

Function VAGetFolderSize { #Fonction qui récupère la taille d'un répertoire au format brute

PARAM([String]$FolderPath)

BEGIN {} #END of BEGIN

PROCESS {
$arrChildItems = Get-ChildItem -Recurse $FolderPath | Select-Object Attributes,FullName,Length,Mode,Name
$FolderSize = ($arrChildItems | Measure-Object -Property Length -Sum).sum
} #END of PROCESS

END { Return $FolderSize } #END of END

#Exemple d'utilisation de la Fonction:
#$a = VAGetFolderSize \"C:\Users\"
#$b = [Math]::Round((\"{0:#.00}\" -f ($a / 1MB«»)),2) <- Formate le resultat
}# END of FUNCTION VAGetFolderSize

Function VAFormatSize {

PARAM([String]$Size)

BEGIN {} #END of BEGIN

PROCESS {
$FormatSize = [Math]::Round((\"{0:#.0000}\" -f ($Size/1MB«»)),2)
} #END of PROCESS

END { Return $FormatSize } #END of END

#Exemple d'utilisation de la Fonction:

}# END of FUNCTION VAFormatSize



If(Test-Path $ExportFile){Remove-Item $ExportFile} #Vérification si le fichier exist
$CSVHeaders | Out-File $ExportFile #Création du fichier CSV pour exporter les donner
If($Recurse -imatch \"True\"«»){$arrDirItems = Get-Childitem $RootFolderPath -Recurse | Where-Object {$_.PSIsContainer} | Select-Object Attributes,FullName,Length,Mode,Name} #Récupère la liste des répertoires et fichiers
If($Recurse -imatch \"False\"«»){$arrDirItems = Get-Childitem $RootFolderPath | Where-Object {$_.PSIsContainer} | Select-Object Attributes,FullName,Length,Mode,Name} #Récupère la liste des répertoires et fichiers

ForEach ($objDirItem in $arrDirItems){

$SubFolderName = $objDirItem.FullName
$SubFolderSizeInMb = VAFormatSize (VAGetFolderSize $SubFolderName)
If((($objDirItem.FullName).Contains(\",\"«»)) -eq \"True\"«»){$SubFolderName = ($objDirItem.FullName).Replace(\",\",\" \"«»)} Else {$SubFolderName = $objDirItem.FullName}
$SubFolderName+\",\"+$SubFolderSizeInMb | Out-File -Append $ExportFile
}
(Import-CSV $ExportFile | Sort-Object {[Double]$_.Size} -Descending) | Export-Csv -Force -NoTypeInformation $ExportFile
[/code:1]

Alan Pinard
Version A

La pièce jointe Get_VAFolderSize.ps1 est absente ou indisponible


Alan Pinard
Version A
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 6 mois #5313 par Robin Lemesle
Salut Versiona,

Ton sript est bien concu et bien documenté. Le seul petit reproche que l'on peut faire est que tu n'utilises pas de paramètres pour définir les noms de répertoire. Mais sinon c'est très bien.

Robin MVP PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.067 secondes
Propulsé par Kunena