PowerShell est un outil d’automatisation puissant pour Windows, et il est extrêmement utile pour gérer le système de fichiers. Surtout lorsqu’il s’agit d’obtenir la taille d’un répertoire, il fournit des informations beaucoup plus détaillées et flexibles qu’en utilisant l’interface graphique. Cet article présente comment obtenir la taille d’un répertoire à l’aide de PowerShell, en utilisant des commandes de base, en convertissant les unités de taille, jusqu’à obtenir la taille totale incluant les sous-répertoires, étape par étape.
Utilisation des commandes de base
La manière la plus basique d’obtenir la taille d’un répertoire dans PowerShell est de combiner la commande Get-ChildItem
avec la commande Measure-Object
. Cette combinaison vous permet de calculer la taille totale des fichiers à l’intérieur du répertoire spécifié.
Voici un exemple de commande pour obtenir la taille d’un répertoire spécifique (ici « C:\ExampleDirectory »).
Get-ChildItem C:\ExampleDirectory -Recurse | Measure-Object -Property Length -Sum
Get-ChildItem C:\ExampleDirectory -Recurse
: Liste tous les éléments à l’intérieur du répertoire spécifié et de ses sous-répertoires.Measure-Object -Property Length -Sum
: Additionne la taille (propriété Length) des fichiers listés.
Cette commande retourne la taille totale de tous les fichiers à l’intérieur du répertoire spécifié en octets. Cependant, cette méthode n’inclut pas la taille du répertoire lui-même, ni ne convertit les unités de taille. La section suivante expliquera comment convertir les unités de taille.
Conversion des unités de taille
La taille du répertoire obtenue dans PowerShell est par défaut en octets. Pour la convertir en un format plus lisible, tel que KB, MB ou GB, vous devez effectuer des calculs. Le script ci-dessous montre comment convertir automatiquement les unités de taille au format le plus approprié et afficher la valeur.
# Obtention de la taille d'un répertoire spécifique
$sizeBytes = (Get-ChildItem C:\ExampleDirectory -Recurse | Measure-Object -Property Length -Sum).Sum
# Fonction pour convertir les unités
function Convert-Size($bytes) {
if ($bytes -gt 1GB) {
"{0:N2} GB" -f ($bytes / 1GB)
} elseif ($bytes -gt 1MB) {
"{0:N2} MB" -f ($bytes / 1MB)
} elseif ($bytes -gt 1KB) {
"{0:N2} KB" -f ($bytes / 1KB)
} else {
"{0} Bytes" -f $bytes
}
}
# Affichage du résultat
$convertedSize = Convert-Size -bytes $sizeBytes
Write-Output "La taille totale de C:\ExampleDirectory est $convertedSize"
Ce script utilise d’abord Get-ChildItem
et Measure-Object
pour obtenir la taille totale du répertoire en octets. Ensuite, cette taille est passée à la fonction Convert-Size
pour la convertir en une unité lisible. Cette fonction détermine si la taille donnée est plus adaptée à GB, MB ou KB, et formate la taille dans cette unité. Enfin, un message incluant la taille convertie est affiché.
Cette méthode vous permet d’obtenir des résultats dans un format facile à comprendre, même pour de grandes tailles de fichiers.
Obtention de la taille totale incluant les sous-répertoires
Lorsque vous utilisez PowerShell pour obtenir la taille d’un répertoire spécifique, il est souvent important de calculer également la taille des sous-répertoires contenus dans ce répertoire. Ce calcul de taille totale peut être utile pour gérer le stockage sur le serveur ou organiser les données. Les étapes suivantes et le morceau de code montrent comment obtenir la taille totale d’un répertoire incluant ses sous-répertoires.
# Répertoire cible
$directoryPath = "C:\ExampleDirectory";
# Calcul de la taille du répertoire
$directorySize = Get-ChildItem $directoryPath -Recurse | Where-Object { -not $_.PSIsContainer } | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue
# Conversion d'unité
de taille
function Convert-Size($bytes) {
switch ($bytes) {
{ $_ -gt 1GB } { "{0:N2} GB" -f ($bytes / 1GB); break }
{ $_ -gt 1MB } { "{0:N2} MB" -f ($bytes / 1MB); break }
{ $_ -gt 1KB } { "{0:N2} KB" -f ($bytes / 1KB); break }
Default { "$bytes Bytes" }
}
}
# Affichage du résultat
$convertedSize = Convert-Size -bytes $directorySize.Sum
Write-Output "La taille totale de $directoryPath est $convertedSize"
Ce script utilise d’abord la commande Get-ChildItem
pour lister récursivement tous les fichiers et sous-répertoires dans le répertoire spécifié. Il filtre ensuite uniquement les fichiers en utilisant le cmdlet Where-Object
et calcule leur taille totale avec Measure-Object
. Le paramètre -ErrorAction SilentlyContinue
est utilisé pour empêcher le script de s’arrêter si une erreur survient pour des raisons telles qu’un manque de droits d’accès.
Ensuite, la fonction Convert-Size
précédemment mentionnée est utilisée pour convertir la taille totale obtenue en octets en un format plus lisible. Enfin, le chemin du répertoire ainsi que la taille convertie sont affichés, montrant clairement la taille totale.
Cette méthode facilite la compréhension de la taille totale des répertoires contenant de grands ensembles de données ou de nombreux sous-répertoires.
Calcul de la taille de types de fichiers spécifiques
Calculer la taille de types de fichiers spécifiques peut être utile pour organiser les données ou optimiser le stockage. Par exemple, les fichiers journaux ou les fichiers image peuvent occuper une quantité significative d’espace, et connaître la taille de ces fichiers peut vous aider à envisager de supprimer ou d’archiver les fichiers inutiles. Voici comment utiliser PowerShell pour calculer la taille totale de types de fichiers spécifiques (par exemple, les fichiers « .log »).
# Répertoire cible
$directoryPath = "C:\ExampleDirectory";
# Type de fichier cible
$fileExtension = "*.log";
# Calcul de la taille du type de fichier
$fileSize = Get-ChildItem $directoryPath -Filter $fileExtension -Recurse | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue
# Fonction de conversion de taille
function Convert-Size($bytes) {
switch ($bytes) {
{ $_ -gt 1GB } { "{0:N2} GB" -f ($bytes / 1GB); break }
{ $_ -gt 1MB } { "{0:N2} MB" -f ($bytes / 1MB); break }
{ $_ -gt 1KB } { "{0:N2} KB" -f ($bytes / 1KB); break }
Default { "$bytes Bytes" }
}
}
# Affichage du résultat
$convertedSize = Convert-Size -bytes $fileSize.Sum
Write-Output "La taille totale des fichiers $fileExtension dans $directoryPath est $convertedSize"
Ce code utilise le cmdlet Get-ChildItem
pour rechercher récursivement des fichiers avec l’extension spécifiée. Le paramètre -Filter
garantit que seuls les fichiers d’un type spécifique sont ciblés. Ensuite, le cmdlet Measure-Object
est utilisé pour calculer la taille totale de ces fichiers, qui est ensuite convertie en une unité lisible par la fonction Convert-Size
mentionnée précédemment.
Cette méthode vous permet de comprendre précisément combien d’espace un type de fichier spécifique occupe sur le stockage, aidant ainsi à prendre des décisions en matière de gestion du stockage.
Exporter les résultats vers un fichier
Sauvegarder les résultats de l’analyse de la taille des répertoires dans un fichier peut être utile pour la génération de rapports ou pour référence future. Cette section présente comment utiliser PowerShell pour exporter les informations sur les tailles de répertoires obtenues vers un fichier texte ou CSV. Cela facilite la visualisation et le partage des données.
Exportation vers un fichier texte
# Répertoire cible
$directoryPath = "C:\ExampleDirectory";
# Chemin du fichier de sortie
$outputFilePath = "C:\directorySizeReport.txt";
# Obtention de la taille du répertoire
$sizeBytes = (Get-ChildItem $directoryPath -Recurse | Measure-Object -Property Length -Sum).Sum
# Conversion des unités de taille
$convertedSize = Convert-Size -bytes $sizeBytes
# Écriture du résultat dans un fichier
"La taille totale de $directoryPath est $convertedSize" | Out-File $outputFilePath
Exportation vers un fichier CSV
L’exportation vers un fichier CSV est particulièrement utile si vous souhaitez comparer les tailles de plusieurs répertoires. L’exemple ci-dessous calcule les tailles de plusieurs répertoires et enregistre chaque résultat dans un fichier CSV.
# Liste des répertoires cibles
$directoryPaths = @("C:\ExampleDirectory", "D:\AnotherDirectory");
# Chemin du fichier CSV de sortie
$outputCsvPath = "C:\directorySizeReport.csv";
# Initialisation du tableau de résultats
$results = @()
foreach ($path in $directoryPaths) {
$sizeBytes = (Get-ChildItem $path -Recurse | Measure-Object -Property Length -Sum).Sum
$convertedSize = Convert-Size -bytes $sizeBytes
$results += [PSCustomObject]@{
"Directory" = $path
"Size" = $convertedSize
}
}
# Exportation des résultats vers un fichier CSV
$results | Export-Csv $outputCsvPath -NoTypeInformation
Ces scripts facilitent la documentation et la sauvegarde des résultats d’analyse des tailles de répertoires. La fonctionnalité d’exportation vers des fichiers texte ou CSV améliore la transparence des tâches de gestion et soutient l’analyse de données future ou la génération de rapports.
Application : Comment surveiller régulièrement les tailles de répertoires à l’aide de scripts
Surveiller régulièrement la taille des répertoires est important pour détecter tôt les augmentations soudaines de données et prévenir les problèmes de capacité de stockage. En combinant des scripts PowerShell avec des tâches planifiées, ce processus peut être automatisé. Voici comment créer un script qui surveille régulièrement les tailles de répertoires et émet un avertissement si la taille spécifiée est dépassée.
Étape 1 : Création d’un script PowerShell
Tout d’abord, créez un script PowerShell qui vérifie la taille d’un répertoire et émet un avertissement si elle dépasse un certain seuil.
# Définition du répertoire cible et du seuil
$directoryPath = "C:\ExampleDirectory";
$thresholdSizeGB = 10
# Obtention de la taille du répertoire et comparaison avec le seuil
$sizeBytes = (Get-ChildItem $directoryPath -Recurse | Measure-Object -Property Length -Sum).Sum
$sizeGB = $sizeBytes / 1GB
if ($sizeGB -gt $thresholdSizeGB) {
Write-Warning "Attention : La taille de $directoryPath a dépassé le seuil de $thresholdSizeGB GB. Taille actuelle : $sizeGB GB.";
}
Étape 2 : Ajout du script aux tâches planifiées
Ensuite, ajoutez le script créé aux tâches planifiées de Windows pour l’exécuter régulièrement.
- Ouvrez « Planificateur de tâches » et sélectionnez « Créer une tâche de base ».
- Donnez un nom et une description à la tâche.
- Définissez le déclencheur pour décider à quelle fréquence le script doit s’exécuter (par exemple, quotidiennement, hebdomadairement).
- À l’étape « Action », sélectionnez « Démarrer un programme » et spécifiez le chemin vers le script PowerShell.
- Ajustez les autres paramètres selon les besoins et enregistrez la tâche.
De cette manière, un avertissement sera automatiquement émis si la taille du répertoire spécifié dépasse le seuil défini. Cela aide à détecter tôt les augmentations soudaines de données ou les pénuries de capacité inattendues et à prendre les mesures appropriées.
Résumé
En exploitant PowerShell, il est possible de mesurer avec précision la taille d’un répertoire spécifique et de réaliser la gestion et la surveillance du stockage sur la base de ces données. Cet article a introduit une large gamme de techniques, allant de l’utilisation de commandes de base, de la conversion d’unités de taille, du calcul de la taille totale incluant les sous-répertoires, du calcul de la taille de types de fichiers spécifiques, de l’exportation des résultats vers un fichier, à la surveillance régulière des tailles de répertoires à l’aide de scripts. En combinant de manière appropriée ces méthodes, une gestion des données plus efficace peut être atteinte. PowerShell a une fois de plus été confirmé comme un outil puissant pour relever les défis associés à l’augmentation des données.