Mesure-Objet PowerShell : Guide complet avec exemples

Compter ou calculer les propriétés numériques des objets, comme les caractères, les mots et les lignes dans les objets de chaîne, peut être exaspérant. Heureusement, la cmdlet Measure-Object de PowerShell est à la hauteur de la tâche.

Dans ce tutoriel, vous apprendrez la puissance de la cmdlet Measure-Object pour automatiser la mesure des propriétés des objets dans PowerShell.

Plongez directement pour améliorer vos compétences en mesure d’objets!

Prérequis

Ce tutoriel est une démonstration pratique. Pour suivre, vous aurez besoin d’un système avec PowerShell installé. Ce tutoriel utilise Windows 10 avec PowerShell v7.

Compter les fichiers et les dossiers

Connaître le nombre de fichiers et de dossiers dans un répertoire peut être utile dans divers scénarios. Un exemple est lorsque vous devez surveiller la taille d’un dossier ou vérifier le nombre de fichiers dans un répertoire.

La cmdlet Measure-Object compte le nombre de fichiers et de dossiers dans un répertoire. Le décompte exact vous aide à mieux gérer et optimiser vos ressources système.

Pour voir comment la cmdlet Measure-Object fonctionne pour compter les fichiers et les dossiers:

1. Ouvrez PowerShell et exécutez la commande suivante Get-ChildItem pour compter et retourner le total des fichiers et dossiers collectivement (Measure-Object) dans votre répertoire actuel.

Get-ChildItem | Measure-Object

La sortie ci-dessous indique 4852 fichiers et dossiers dans le répertoire actuel.

Counting the files and folders in the current directory

Peut-être souhaitez-vous inclure tous les fichiers et sous-répertoires dans l’arborescence du répertoire de manière récursive. Si tel est le cas, ajoutez le paramètre -Recurse, comme indiqué ci-dessous. Get-ChildItem -Recurse | Measure-Object

2. Ensuite, exécutez la même commande ci-dessous comme vous l’avez fait à l’étape un. Mais cette fois, ajoutez le paramètre -Directory pour ne compter que les répertoires totaux dans le répertoire de travail.

Get-ChildItem -Directory | Measure-Object

Comme vous pouvez le voir ci-dessous, le décompte total est maintenant plus bas (135) puisque la commande a compté uniquement les répertoires, excluant tous les autres objets.

Counting the number of directories in the current directory

3. Maintenant, exécutez la commande ci-dessous pour compter les fichiers exécutables (.exe) dans votre répertoire actuel.

Le paramètre -Filter indique à la cmdlet Get-ChildItem de filtrer les résultats et de ne retourner que les fichiers avec l’extension que vous spécifiez (c’est-à-dire, *.txt, *.jpg, *.csv).

Get-ChildItem -Filter *.exe | Measure-Object
Counting the number of executable files in a directory

Mesurer les tailles de fichiers

La mesure des longueurs et des tailles des objets peut aider à mieux gérer votre système car les gros fichiers affectent les performances de votre système. En plus de compter les propriétés, vous pouvez également mesurer la longueur et la taille des objets via la cmdlet Measure-Object.

Exécutez le code ci-dessous pour récupérer tous les fichiers dans le répertoire actuel (Get-ChildItem) et afficher (Write-Host) leurs longueurs respectives en octets par défaut.

Le code ci-dessous affiche chaque mesure dans la console, y compris les tailles de fichier minimales et maximales, la taille moyenne des fichiers, la somme des tailles de fichier et le nombre total de fichiers.

# Définir le seuil pour la taille moyenne des fichiers
$threshold = 5000000 
# Mesurer la taille de chaque fichier dans le répertoire actuel
$files = Get-ChildItem | Measure-Object -Property length -Minimum -Maximum -Sum -Average

Write-Host "Minimum file size: $($files.Minimum) bytes"
Write-Host "Maximum file size: $($files.Maximum) bytes"
Write-Host "Sum of file sizes: $($files.Sum) bytes"
Write-Host "Average file size: $($files.Average) bytes"
Write-Host "Total number of files: $($files.Count)"

# Vérifier si la taille moyenne des fichiers est supérieure ou inférieure au seuil
if ($files.Average -ge $threshold) {
    # Si la taille moyenne des fichiers est supérieure au seuil, jouer un son aigu
    [console]::beep(1000, 500)
} else {
    # Si la taille moyenne des fichiers est inférieure au seuil, jouer un son grave
    [console]::beep(500, 500)
}

Ci-dessous, vous pouvez voir les tailles affichées en octets.

Measuring file sizes

Peut-être que coller le code dans la console n’est pas votre truc. Si c’est le cas, enregistrez le code dans un fichier de script PowerShell et exécutez-le.

Maintenant, exécutez les commandes suivantes pour obtenir un fichier dans le répertoire actuel, où (Where-Object) sa taille ($_.Length) est égale (-eq) à la taille maximale du fichier ($files.Maximum).

# Obtenir et stocker le fichier de la même taille que $files.Maximum
$max = Get-ChildItem | Where-Object -FilterScript {$_.Length -eq $files.Maximum}
# Afficher la valeur de la taille maximale ($files.Maximum) et le fichier de cette taille
Write-Host "Maximum file size: $($files.Maximum) bytes `nFile: $max"

La sortie ci-dessous montre le nom du fichier le plus volumineux dans le répertoire actuel.

Getting the most extensive file in size

Mesure du contenu d’un fichier texte

Au lieu de mesurer les tailles de fichier, vous devrez peut-être déterminer le nombre de lignes, de mots ou de caractères dans un fichier texte. Si tel est le cas, la cmdlet Measure-Object a de nombreux autres paramètres pour mesurer le contenu d’un fichier texte.

Exécutez le code ci-dessous pour mesurer le contenu du fichier texte (Measure-Object) par -Character, -Line, et -Word, et afficher (Write-Host) les mesures.

Assurez-vous de modifier les valeurs des variables $file_path et $file_content avec vos propres valeurs préférées.

# Définir le chemin du fichier et le contenu
$file_path = "C:\Temp\measure-object.txt"
$file_content = "One fish, two fishes, three fishes"

# Créer le fichier en fonction du chemin de fichier et du contenu définis
Set-Content -Path $file_path -Value $file_content

# Mesurer le contenu du fichier texte
$measurements = Get-Content -Path $file_path | Measure-Object -Character -Line -Word

# Afficher les mesures dans la console
Write-Host "The file '$file_path' contains $($measurements.Lines) lines, $($measurements.Words) words, and $($measurements.Characters) characters."
Measuring text file contents

Mesure des valeurs booléennes

Les valeurs booléennes sont des valeurs qui peuvent seulement être vraies ou fausses. En PowerShell, les valeurs booléennes sont souvent utilisées pour contrôler le flux d’un script, déterminer une condition (vrai ou faux), ou indiquer le succès ou l’échec d’une commande.

La mesure des valeurs booléennes peut être utile dans divers scénarios, tels que :

  • Compter le nombre de valeurs vraies ou fausses dans un ensemble de données.
  • Déterminer le pourcentage de valeurs vraies par rapport au nombre total de valeurs.

Ces informations peuvent aider à prendre des décisions éclairées dans le traitement ou l’analyse des données.

Pour voir comment fonctionne la mesure des valeurs booléennes :

Exécutez les commandes suivantes pour compter la somme des valeurs booléennes (valeurs vraies par défaut) dans le tableau (\code{$valeurs$}).

# Définissez un tableau de valeurs booléennes (\$vrai et \$faux).
$values = $true,$false,$false,$true,$true,$true,$false,$false,$true
# Mesurez (comptez) les valeurs booléennes (valeurs vraies par défaut).
$values | Measure-Object -Sum

Ci-dessous, le total \diy10{Compte} des valeurs booléennes est neuf (\diy11{9}), tandis que la \diy12{Somme} est cinq (\diy13{5}) puisque seules les valeurs vraies sont comptées.

Et les valeurs fausses ? Passez à l’étape suivante et exécutez quelques commandes supplémentaires.

Counting the number of true values in an array

Maintenant, exécutez le code ci-dessous pour soustraire la somme des valeurs vraies (\code{\$trueCount}) du total des valeurs booléennes (\code{\$count}). La différence de l’équation est le total des valeurs fausses (\code{\$falseCount}).

# Obtenez le nombre total de valeurs booléennes dans un tableau
$count = $values.Count
# Obtenez la somme des valeurs vraies
$trueCount = ($values | Measure-Object -Sum).Sum
# Soustrayez le total des valeurs vraies du total des valeurs booléennes
# pour obtenir le total des valeurs fausses
$falseCount = $count - $trueCount
# Affichez les totaux des valeurs vraies et fausses
Write-Host "Number of true values: $trueCount"
Write-Host "Number of false values: $falseCount"
Counting the number of false values

Si mesurer des valeurs booléennes est une tâche quotidienne, vous pouvez créer une fonction que vous pouvez appeler à tout moment pour exécuter la tâche.

Mesure des tableaux de hachage

Les tableaux de hachage en PowerShell (une collection de paires clé-valeur) vous permettent de stocker et de récupérer des données rapidement et efficacement. Si vous avez besoin du nombre d’éléments dans un tableau de hachage ou des valeurs maximale et minimale, laissez la commande Measure-Object mesurer vos tableaux de hachage.

Exécutez les commandes ci-dessous pour trouver les valeurs -Minimum et -Maximum de la propriété Num dans votre tableau de hachage ($MyHastable).

# Créez un tableau de hachage contenant trois tableaux de hachage, chacun avec une propriété Num.
$MyHashtable = @(@{Num=10}, @{Num=20}, @{Num=30})
# Mesurez la propriété Num du tableau de hachage par minimum et maximum.
$Stats = $MyHashtable | Measure-Object -Minimum -Maximum Num
# Affichez les mesures du tableau de hachage
$Stats
Measuring hashtables

Mesure des écart-types

Réviser des ensembles de données peut être décousu, mais cela n’est pas nécessaire. Mesurer l’écart type est utile pour comprendre la distribution des valeurs d’un ensemble de données. Vous pouvez également identifier tout écart ou point de données inhabituel qui pourrait influencer les résultats.

L’écart type mesure la variation ou la dispersion des valeurs d’un ensemble de données par rapport à la valeur moyenne. Cette mesure est calculée en trouvant la racine carrée de la variance des données, qui est la moyenne des différences au carré par rapport à la moyenne.

Exécutez le code ci-dessous pour calculer et afficher la -Moyenne et la -ÉcartType d’un tableau de nombres stocké dans la variable $Nombres.

# Définir un tableau de nombres
$Numbers = 10, 20, 30, 40, 50

# Calculer la moyenne et l'écart type des nombres
$Average = ($Numbers | Measure-Object -Average).Average
$StdDev = ($Numbers | Measure-Object -StandardDeviation).StandardDeviation

# Afficher les résultats
"Average: $Average"
"Standard deviation: $StdDev"

En statistiques, la moyenne mesure la tendance centrale, décrivant la valeur typique ou la plus représentative d’un ensemble de données.

La moyenne est calculée en additionnant tous les chiffres d’un ensemble de données et en divisant par le nombre total de valeurs. Dans cet exemple, l’ensemble de données est {10, 20, 30, 40, 50} avec une somme de 150, et cinq chiffres (5) sont dans l’ensemble.

Par conséquent, la moyenne est calculée ci-dessous, ce qui donne 30.

Average = (10 + 20 + 30 + 40 + 50) / 5 = 30

En revanche, l’écart type mesure la dispersion d’un ensemble de données. L’écart type est calculé comme suit:

1. Find the difference between each data point and the average:
   10 - 30 = -20
   20 - 30 = -10
   30 - 30 = 0
   40 - 30 = 10
   50 - 30 = 20
   
2. Square each of these differences:
   (-20)^2 = 400
   (-10)^2 = 100
   0^2 = 0
   10^2 = 100
   20^2 = 400
   
3. Add up all the squared differences:
   400 + 100 + 0 + 100 + 400 = 1000
   
4. Divide the sum of squared differences by the total number of values:
   1000 / 5 = 200
   
5. Take the square root of the result:
   sqrt(200) = 14.142135623731
   
The standard deviation of this set of data is approximately 14.14. But 
in this case, the result is 15.8113883008419 
because of floating-point arithmetic limitations in computers.
Measuring the standard deviation

Conclusion

Mesurer les données est une tâche essentielle, et la commande Measure-Object de PowerShell est un outil puissant pour accomplir cette tâche. Et dans ce tutoriel, vous avez appris comment mesurer les données de plusieurs manières. Que vous travailliez avec des fichiers, le contenu de fichiers texte, des valeurs booléennes, des chaînes de caractères, des tableaux ou des tables de hachage, les mesurer peut fournir des informations précieuses.

Maintenant, vous pouvez facilement calculer la moyenne, la valeur maximale et minimale de vos données et mesurer la variation ou la dispersion de vos données. Avec ces fonctionnalités, vous pouvez obtenir une compréhension plus approfondie de vos données et prendre des décisions éclairées basées sur votre analyse.

Avec ces connaissances acquises, pourquoi ne pas étendre votre boîte à outils PowerShell et ajouter Compare-Object à votre arsenal?

Source:
https://adamtheautomator.com/powershell-measure-object/