126 lines
4.0 KiB
PowerShell
126 lines
4.0 KiB
PowerShell
<#
|
||
.SYNOPSIS
|
||
|
||
Cette fonction renvoi le nombre de fichier et la taille contenu dans le dossier ainsi que le détail pour les sous-dossiers sur N niveaux.
|
||
Le résultat est un tableau indiquant le nombre et la taille des fichiers directement dans le dossier ainsi que le cumul des sous dossiers.
|
||
Il est possible de définir l'unité pour les tailles (B,Kb,Mb,Gb), le nombre de niveau et de filtrer sur certains types de fichier (*.txt)
|
||
La fonction utilise Get-childitem et Measure-Object.
|
||
Attention à la version de PowerShell.
|
||
|
||
This function returns the number of files and the size contained in the folder as well as the detail for the subfolders on N levels.
|
||
The result is a table showing the number and size of files directly in the folder as well as the total of subfolders.
|
||
It is possible to set the unit for sizes (B, Kb, Mb, Gb), the number of level and filter on certain file types (* .txt)
|
||
The function uses Get-childitem and Measure-Object.
|
||
Watch out for the PowerShell version.
|
||
|
||
|
||
.DESCRIPTION
|
||
Cette fonction renvoie un tableau avec :
|
||
- chemin du dossier (Path)
|
||
- nombre de fichiers dans le dossier (InFolderFiles)
|
||
- tailles des fichiers dans le dossier (InFolderSize)
|
||
- nombre de fichier dans le dossier et les sous dossiers (AllFiles)
|
||
- tailles des fichiers du dossier et des sous dossiers (AllSize)
|
||
|
||
This function returns an array with:
|
||
- Path of the folder (Path)
|
||
- number of files in the folder (InFolderFiles)
|
||
- file sizes in the folder (InFolderSize)
|
||
- number of files in the folder and subfolders (AllFiles)
|
||
- file sizes of the folder and subfolders (AllSize)
|
||
|
||
|
||
.PARAMETER FolderPath
|
||
|
||
Chemin du dossier à analyser
|
||
Folder path to analyze
|
||
|
||
.PARAMETER Level
|
||
|
||
Nombre de niveau de sous dossier.
|
||
Number of subfolder level.
|
||
|
||
.PARAMETER unit
|
||
|
||
Unité pour les tailles de fichiers (B,Kb,Mb,Gb).Par défaut :Gb.
|
||
Unit for file sizes
|
||
|
||
.PARAMETER Filter (B,Kb,Mb,Gb), default Gb.
|
||
|
||
Filtre les fichiers par type. Par exemple *.txt ne compte que les fichiers txt.
|
||
Filters files by type. For example * .txt only counts txt files.
|
||
|
||
|
||
.EXAMPLE
|
||
|
||
.\Get-FolderSize.ps1 -FolderPath d:\tools -level 2
|
||
.EXAMPLE
|
||
|
||
.\Get-FolderSize.ps1 -FolderPath \\Server\Documents -level 2 -filter "*.doc*" -unit "kb"
|
||
|
||
.NOTES
|
||
Author: Philippe BARTH
|
||
Version: 1.0
|
||
#>
|
||
|
||
# Déclaration des paramètres
|
||
param([string]$FolderPath,[int]$level,[string]$unit="Mb",[string]$Filter="*.*")
|
||
|
||
if ($level -lt 1) { $level = 1 }
|
||
|
||
# Determine unit for folder size, default Gb
|
||
Switch ($unit)
|
||
{
|
||
"Gb"
|
||
{
|
||
$div="1GB"
|
||
}
|
||
|
||
"Mb"
|
||
{
|
||
$div="1MB"
|
||
}
|
||
|
||
"Kb"
|
||
{
|
||
$div="1KB"
|
||
}
|
||
"b"
|
||
{
|
||
$div="1"
|
||
}
|
||
Default
|
||
{
|
||
$div="1GB"
|
||
}
|
||
|
||
}
|
||
|
||
|
||
#init result
|
||
$result=@()
|
||
# search subfolder
|
||
$SubFolders = (Get-ChildItem -path $FolderPath -recurse -Directory -Depth $($level-1)).FullName
|
||
#add parent folder in list
|
||
$SubFolders+=$FolderPath
|
||
# scan all folder
|
||
foreach ($subfolder in $SubFolders)
|
||
{
|
||
#Search file in folder and subfolder
|
||
$FolderSize = Get-ChildItem -path $SubFolder -filter $filter -File -recurse | Measure-Object -Sum Length
|
||
#Search file only in folder
|
||
$fileInFolder = Get-ChildItem -path $SubFolder -filter $filter -File | Measure-Object -Sum Length
|
||
|
||
#result
|
||
$result+= New-Object -TypeName PSObject -Property @{
|
||
Path = $subfolder
|
||
AllFiles = $foldersize.count
|
||
AllSize = $foldersize.sum/$div
|
||
InFolderFiles = $fileInFolder.count
|
||
InFolderSize = $fileInFolder.sum/$div
|
||
}
|
||
|
||
}
|
||
|
||
return $result | Sort-Object -Property path
|