PowerShell Measure-Object: Ein vollständiger Leitfaden mit Beispielen

Das Zählen oder Berechnen numerischer Eigenschaften von Objekten wie Zeichen, Wörtern und Zeilen in Zeichenketten kann frustrierend sein. Glücklicherweise ist der PowerShell Measure-Object Befehl für diese Aufgabe geeignet.

In diesem Tutorial lernen Sie die Leistungsfähigkeit des Measure-Object Befehls kennen, um Objekteigenschaften in PowerShell automatisch zu messen.

Tauchen Sie ein und verbessern Sie Ihre Fähigkeiten zur Messung von Objekten!

Voraussetzungen

Dieses Tutorial ist eine praktische Demonstration. Um mitzumachen, benötigen Sie ein System mit PowerShell. Dieses Tutorial verwendet Windows 10 mit PowerShell v7.

Zählen von Dateien und Ordnern

Die Kenntnis der Anzahl von Dateien und Ordnern in einem Verzeichnis kann in verschiedenen Szenarien hilfreich sein. Ein Beispiel ist, wenn Sie die Größe eines Ordners überwachen oder die Anzahl der Dateien in einem Verzeichnis überprüfen müssen.

Der Measure-Object Befehl zählt die Anzahl der Dateien und Ordner in einem Verzeichnis. Die genaue Anzahl hilft Ihnen dabei, Ihre Systemressourcen besser zu verwalten und zu optimieren.

Um zu sehen, wie der Measure-Object Befehl zum Zählen von Dateien und Ordnern funktioniert:

1. Öffnen Sie PowerShell und führen Sie den folgenden Befehl Get-ChildItem aus, um die Gesamtanzahl der Dateien und Ordner gemeinsam (Measure-Object) im aktuellen Verzeichnis zu zählen und zurückzugeben.

Get-ChildItem | Measure-Object

Die Ausgabe unten zeigt 4852 Dateien und Ordner im aktuellen Verzeichnis an.

Counting the files and folders in the current directory

Vielleicht möchten Sie alle Dateien und Unterverzeichnisse im Verzeichnisbaum rekursiv einbeziehen. Wenn ja, fügen Sie den -Recurse-Parameter wie unten gezeigt hinzu. Get-ChildItem -Recurse | Measure-Object

2. Führen Sie als Nächstes denselben Befehl wie in Schritt eins aus. Fügen Sie diesmal jedoch den -Directory-Parameter hinzu, um nur die Gesamtanzahl der Verzeichnisse im Arbeitsverzeichnis zu zählen.

Get-ChildItem -Directory | Measure-Object

Wie unten zu sehen ist, ist die Gesamtanzahl nun niedriger (135), da der Befehl nur Verzeichnisse gezählt hat und alle anderen Objekte ausschließt.

Counting the number of directories in the current directory

3. Führen Sie nun den folgenden Befehl aus, um die ausführbaren Dateien (.exe) im aktuellen Verzeichnis zu zählen.

Der -Filter-Parameter teilt dem Get-ChildItem-Cmdlet mit, die Ergebnisse zu filtern und nur die Dateien mit der von Ihnen angegebenen Erweiterung (d. h. *.txt, *.jpg, *.csv) zurückzugeben.

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

Das Messen von Dateigrößen

Das Messen von Objektlängen und -größen kann helfen, Ihr System besser zu verwalten, da große Dateien die Leistung Ihres Systems beeinträchtigen können. Neben dem Zählen von Eigenschaften können Sie auch die Länge und Größe von Objekten mithilfe des Measure-Object-Cmdlets messen.

Führen Sie den folgenden Code aus, um alle Dateien im aktuellen Verzeichnis (Get-ChildItem) abzurufen und ihre jeweiligen Längen standardmäßig in Bytes anzuzeigen (Write-Host).

Der folgende Code gibt jede Messung auf der Konsole aus, einschließlich der minimalen und maximalen Dateigrößen, der durchschnittlichen Dateigröße, der Summe der Dateigrößen und der Gesamtzahl der Dateien.

# Legen Sie die Schwelle für die durchschnittliche Dateigröße fest
$threshold = 5000000 
# Messen Sie die Größe jeder Datei im aktuellen Verzeichnis
$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)"

# Überprüfen Sie, ob die durchschnittliche Dateigröße über oder unter der Schwelle liegt
if ($files.Average -ge $threshold) {
    # Wenn die durchschnittliche Dateigröße über der Schwelle liegt, geben Sie einen hochfrequenten Ton aus
    [console]::beep(1000, 500)
} else {
    # Wenn die durchschnittliche Dateigröße unter der Schwelle liegt, geben Sie einen tiefen Ton aus
    [console]::beep(500, 500)
}

Unten sehen Sie die Größen in Bytes angezeigt.

Measuring file sizes

Vielleicht ist das Einfügen des Codes in die Konsole nichts für Sie. Wenn dies der Fall ist, speichern Sie den Code in einer PowerShell-Skriptdatei und führen Sie ihn aus.

Führen Sie nun die folgenden Befehle aus, um eine Datei im aktuellen Verzeichnis zu erhalten, bei der die Größe ($_.Length) dem maximalen Dateigröße ($files.Maximum) entspricht.

# Datei mit der gleichen Größe wie $files.Maximum erhalten und speichern
$max = Get-ChildItem | Where-Object -FilterScript {$_.Length -eq $files.Maximum}
# Wert der maximalen Größe ($files.Maximum) und der Datei mit dieser Größe anzeigen
Write-Host "Maximum file size: $($files.Maximum) bytes `nFile: $max"

Die Ausgabe unten zeigt den Namen der umfangreichsten Datei im aktuellen Verzeichnis.

Getting the most extensive file in size

Messen des Inhalts einer Textdatei

Anstatt Dateigrößen zu messen, müssen Sie möglicherweise die Anzahl der Zeilen, Wörter oder Zeichen in einer Textdatei bestimmen. Wenn dies der Fall ist, hat das Measure-Object Cmdlet viele andere Parameter, um den Inhalt von Textdateien zu messen.

Führen Sie den folgenden Code aus, um die folgenden Maßnahmen am Inhalt der Textdatei (Measure-Object) nach -Character, -Line und -Word durchzuführen und die Messungen auszugeben (Write-Host).

Stellen Sie sicher, dass Sie die Werte der Variablen $file_path und $file_content mit Ihren bevorzugten Werten ändern.

# Definieren Sie den Dateipfad und den Inhalt
$file_path = "C:\Temp\measure-object.txt"
$file_content = "One fish, two fishes, three fishes"

# Erstellen Sie die Datei anhand des definierten Dateipfads und Inhalts
Set-Content -Path $file_path -Value $file_content

# Messen Sie den Inhalt der Textdatei
$measurements = Get-Content -Path $file_path | Measure-Object -Character -Line -Word

# Geben Sie die Messungen in der Konsole aus
Write-Host "The file '$file_path' contains $($measurements.Lines) lines, $($measurements.Words) words, and $($measurements.Characters) characters."
Measuring text file contents

Messen von booleschen Werten

Boolesche Werte sind Werte, die nur wahr oder falsch sein können. In PowerShell werden boolesche Werte häufig verwendet, um den Ablauf eines Skripts zu steuern, eine Bedingung (wahr oder falsch) festzulegen oder den Erfolg oder Misserfolg eines Befehls anzuzeigen.

Das Messen von booleschen Werten kann in verschiedenen Szenarien nützlich sein, wie zum Beispiel:

  • Zählen der Anzahl von wahren oder falschen Werten in einem Datensatz.
  • Bestimmen des Prozentsatzes wahrer Werte im Verhältnis zur Gesamtzahl der Werte.

Diese Informationen können bei der Verarbeitung oder Analyse von Daten helfen.

Um zu sehen, wie das Messen von booleschen Werten funktioniert:

Führen Sie die folgenden Befehle aus, um die Summe der booleschen Werte (Standardmäßig true-Werte) im Array ($Werte) zu zählen.

# Definieren Sie ein Array von booleschen Werten ($true und $false).
$values = $true,$false,$false,$true,$true,$true,$false,$false,$true
# Messen (zählen) Sie die booleschen Werte (Standardmäßig true-Werte).
$values | Measure-Object -Sum

Unten ist die Gesamtanzahl der booleschen Werte neun (9), während die Summe fünf (5) beträgt, da nur die true-Werte gezählt werden.

Was ist mit den false-Werten? Springen Sie zum nächsten Schritt und führen Sie ein paar weitere Befehle aus.

Counting the number of true values in an array

Führen Sie nun den folgenden Code aus, um die Summe der true-Werte ($trueCount) von der Gesamtanzahl der booleschen Werte ($count) abzuziehen. Die Differenz aus der Gleichung ist die Gesamtanzahl der false-Werte ($falseCount).

# Holen Sie sich die Gesamtanzahl der booleschen Werte in einem Array
$count = $values.Count
# Holen Sie sich die Summe der true-Werte
$trueCount = ($values | Measure-Object -Sum).Sum
# Ziehen Sie die Summe der true-Werte von der Gesamtanzahl der booleschen Werte ab
# um die Gesamtanzahl der false-Werte zu erhalten
$falseCount = $count - $trueCount
# Zeigen Sie die Gesamtanzahlen von true- und false-Werten an
Write-Host "Number of true values: $trueCount"
Write-Host "Number of false values: $falseCount"
Counting the number of false values

Wenn das Messen von booleschen Werten eine tägliche Aufgabe ist, können Sie eine Funktion erstellen, die Sie jederzeit aufrufen können, um die Aufgabe auszuführen.

Messen von Hashtables

Hashtables in PowerShell (eine Sammlung von Schlüssel-Wert-Paaren) ermöglichen es Ihnen, Daten schnell und effizient zu speichern und abzurufen. Wenn Sie die Anzahl der Elemente in einer Hashtable oder die maximalen und minimalen Werte benötigen, lassen Sie das Cmdlet Measure-Object Ihre Hashtables messen.

Führen Sie die folgenden Befehle aus, um die Num-Eigenschaften mit den Werten -Minimum und -Maximum in Ihrer Hashtable ($MyHastable) zu finden.

# Erstellen Sie eine Hashtable, die drei Hashtables enthält, von denen jede eine Num-Eigenschaft enthält.
$MyHashtable = @(@{Num=10}, @{Num=20}, @{Num=30})
# Messen Sie die Num-Eigenschaft der Hashtable nach Minimum und Maximum.
$Stats = $MyHashtable | Measure-Object -Minimum -Maximum Num
# Zeigen Sie die Messungen der Hashtable an
$Stats
Measuring hashtables

Messen von Standardabweichungen

Die Überprüfung von Datensätzen kann verwirrend sein, muss es jedoch nicht sein. Das Messen der Standardabweichung ist nützlich, um die Verteilung der Werte im Datensatz zu verstehen. Sie können auch Ausreißer oder ungewöhnliche Datenpunkte identifizieren, die die Ergebnisse beeinflussen können.

Die Standardabweichung misst die Variation oder Streuung der Werte im Datensatz vom Mittelwert (Durchschnitt) ab. Diese Messung wird berechnet, indem die Quadratwurzel der Varianz der Daten gefunden wird, die der Durchschnitt der quadrierten Unterschiede vom Mittelwert ist.

Führen Sie den folgenden Code aus, um den Durchschnitt und die Standardabweichung eines Arrays von Zahlen zu berechnen und anzuzeigen, die in der Variable $Numbers gespeichert sind.

# Definieren Sie ein Array von Zahlen
$Numbers = 10, 20, 30, 40, 50

# Berechnen Sie den Durchschnitt und die Standardabweichung der Zahlen
$Average = ($Numbers | Measure-Object -Average).Average
$StdDev = ($Numbers | Measure-Object -StandardDeviation).StandardDeviation

# Ergebnisse ausgeben
"Average: $Average"
"Standard deviation: $StdDev"

In der Statistik misst der Mittelwert die zentrale Tendenz und beschreibt den typischen oder repräsentativsten Wert eines Datensatzes.

Der Durchschnitt wird berechnet, indem alle Zahlen in einem Datensatz addiert und durch die Gesamtanzahl der Werte geteilt werden. In diesem Beispiel ist der Datensatz {10, 20, 30, 40, 50} mit einer Summe von 150, und fünf Zahlen (5) sind im Satz enthalten.

Folglich wird der Durchschnitt unten berechnet, der 30 ist.

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

Andererseits misst die Standardabweichung die Streuung oder Verteilung eines Datensatzes. Die Standardabweichung wird wie folgt berechnet:

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

Abschluss

Das Messen von Daten ist eine wesentliche Aufgabe, und das PowerShell Measure-Object cmdlet ist ein leistungsstarkes Werkzeug, um die Aufgabe zu erledigen. In diesem Tutorial haben Sie gelernt, wie Sie Daten auf viele Arten messen können. Egal, ob Sie mit Dateien, Inhalten von Textdateien, booleschen Werten, Zeichenfolgen, Arrays oder Hashtabellen arbeiten, das Messen kann wertvolle Einblicke bieten.

Jetzt können Sie ganz einfach den Durchschnitt, das Maximum und das Minimum Ihrer Daten berechnen und die Variation oder Streuung Ihrer Daten messen. Mit diesen Funktionen können Sie ein tieferes Verständnis Ihrer Daten gewinnen und fundierte Entscheidungen auf der Grundlage Ihrer Analyse treffen.

Mit diesem neu gewonnenen Wissen, warum erweitern Sie nicht Ihr PowerShell-Toolkit und fügen Compare-Object zu Ihrem Arsenal hinzu?

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