PowerShell ist ein leistungsstarkes Werkzeug zur Verwaltung von Daten, liefert jedoch in der Regel gleichzeitig zu viele Informationen. Wie Sie wissen, kann zu viele Informationen überwältigend und schwer zu durchsuchen sein. Aber keine Sorge. Das PowerShell Select-Object
Cmdlet wird sich als nützlich erweisen.
In diesem Tutorial lernen Sie die Grundlagen des Select-Object
Cmdlets kennen, um Ergebnisse auf verschiedene Arten einzugrenzen oder zu filtern.
Lesen Sie weiter und starten Sie die schmerzfreie Datenverwaltung!
Voraussetzungen
Dieses Tutorial umfasst praktische Demonstrationen. Um mitzumachen, stellen Sie sicher, dass Sie ein System mit PowerShell installiert haben. Dieses Tutorial verwendet Windows 10 mit PowerShell 7, aber jede moderne Version sollte ebenfalls funktionieren.
Was ist das PowerShell Select-Object Cmdlet?
Das Select-Object
Cmdlet vereinfacht die Datenverwaltung, indem es Ihnen ermöglicht, bestimmte Eigenschaften aus einem Objekt oder Datensatz auszuwählen. Gleichzeitig können Sie Eigenschaften umbenennen oder basierend auf vorhandenen Eigenschaften berechnete Eigenschaften erstellen.
Die grundlegende Syntax von Select-Object
lautet wie folgt, wobei:
Parameter | Function |
---|---|
-InputObject |
Specifies the object or data set you want to work with, which can be an object, an array of objects, or an output of another cmdlet. |
Property |
Specifies the property or properties to select from the InputObject parameter. You can specify multiple properties separated by commas. |
Optional Parameters |
Allows you to refine your selection, such as selecting a certain number of objects or skipping objects. |
Auswahl von Objekten nach Eigenschaften
Da mehr als eine kurze Einführung erforderlich ist, um Ihrem Wunsch nach Informationen zum Cmdlet Select-Object
gerecht zu werden, warum beginnen Sie nicht mit einem seiner häufigen Anwendungsfälle? Starten Sie dieses Tutorial, indem Sie eine bestimmte Eigenschaft von einem Objekt mit dem Cmdlet Select-Object
auswählen.
Angenommen, Sie haben eine Liste der auf Ihrem Computer ausgeführten Prozesse, möchten jedoch nur die Namen jedes Prozesses sehen. Durch Angabe der Name
-Eigenschaft an das Cmdlet Select-Object
wird dies erledigt.
Öffnen Sie PowerShell und führen Sie den folgenden Befehl Get-Process
aus, um eine Liste aller Prozesse nur nach Name
auszuwählen und anzuzeigen (Select-Object
).

Neben laufenden Prozessen ermöglicht Ihnen das Cmdlet
Select-Object
auch die Arbeit mit einer CSV-Datei. Angenommen, Sie haben eine CSV-Datei mit vielen Spalten, benötigen jedoch nur einige davon. Lassen Sie das CmdletSelect-Object
nur die relevanten Spalten auswählen, damit Sie die Daten bearbeiten und analysieren können.
Führen Sie jetzt den folgenden Befehl aus, um mehrere Eigenschaften auszuwählen (\code{Select-Object}): \code{Name} und \code{CPU} (durch Kommas getrennt). Diese Funktion hilft beim Arbeiten mit großen Datensätzen, bei denen Sie nur einige Eigenschaften jedes Objekts benötigen.
Darüber hinaus sortiert dieser Befehl auch die Liste der Objekte (\code{Sort-Object}) in absteigender Reihenfolge mit der Eigenschaft \code{CPU} als Referenz.
Unten sehen Sie die aufgelisteten Prozesse, beginnend mit dem ressourcenintensivsten, Google Chrome (falls installiert).

Erstellen einer berechneten Eigenschaft
Wenn Sie nach Eigenschaften suchen, die Ihren Anforderungen besser entsprechen, sollten Sie die Erstellung einer berechneten Eigenschaft in Betracht ziehen. Warum? Berechnete Eigenschaften ermöglichen es Ihnen, Daten zu manipulieren und zu transformieren, vorhandene Eigenschaften zu kombinieren, mathematische Operationen auszuführen oder Daten auf eine bestimmte Weise zu formatieren.
Um eine berechnete Eigenschaft zu erstellen, müssen Sie einen neuen Eigenschaftsnamen und einen Ausdruck angeben, der definiert, wie der Eigenschaftswert berechnet wird:
Führen Sie den folgenden Befehl aus, um Folgendes durchzuführen:
- Abrufen einer Liste von laufenden Prozessen (\code{Get-Process}), wobei nur die Eigenschaften \code{Name} und \code{CPU} ausgewählt werden.
- Erstellen Sie eine neue berechnete Eigenschaft mit dem Namen \texttt{Memory (MB)}, die den Speicherverbrauch jedes Prozesses in Megabyte berechnet. Der Speicherverbrauch wird mit einem \texttt{Ausdruck} berechnet, der die Eigenschaft \texttt{WorkingSet} durch \texttt{1MB} teilt. Jeder gültige PowerShell-Ausdruck funktioniert beim Erstellen einer berechneten Eigenschaft.
- Druckt alle abgerufenen laufenden Prozesse in absteigender Reihenfolge nach der berechneten \texttt{Memory (MB)}-Eigenschaft.

Ausschluss einer bestimmten Eigenschaft
Im wirklichen Leben können die Ergebnisse eines \texttt{Select-Object}-Befehls sensible Informationen wie Benutzernamen und Passwörter enthalten. Wie kann man dieses Risiko vermeiden?
Um zu verhindern, dass sensible Daten im Ausgabefenster angezeigt werden, fügen Sie den Parameter \texttt{-ExcludeProperty} hinzu, um eine bestimmte Eigenschaft aus der Ausgabe auszuschließen.
Führen Sie den folgenden Befehl aus, um die folgenden Aufgaben auszuführen:
- Abrufen einer Liste aller Dateien und Ordner (
Get-ChildItem
) im Verzeichnis \texttt{C:\\} rekursiv (-Recurse
).
- Leiten Sie die Ausgabe an das cmdlet
Select-Object
weiter, um die EigenschaftenName
,Länge
undLastWriteTime
auszuwählen. - Schließen Sie die Eigenschaft
FullName
von der Ausgabe aus (-ExcludeProperty
). Dadurch werden die vollständigen Pfade in der Ausgabe nicht angezeigt, die vertrauliche Informationen enthalten können.

Überspringen der ersten oder letzten Anzahl von Objekten
Bei der Arbeit mit umfangreichen Datensätzen kann das Auffinden der benötigten Daten wie die Suche nach einem Diamanten in einem Kohlebergwerk sein. Aber warum Zeit damit verschwenden, irrelevante Daten zu durchsuchen?
In PowerShell bietet das cmdlet Select-Object
zwei Parameter, mit denen Sie die ersten (-Skip
) und letzten (-SkipLast
) Anzahl von Objekten in der Ausgabe ausschließen können.
Um zu sehen, wie das Überspringen mehrerer Objekte aus einer Ausgabe funktioniert:
Führen Sie den folgenden Befehl aus, um alle laufenden Prozesse (Get-Process
) zu erhalten, aber überspringen Sie die ersten 100
zurückgegebenen Objekte mit -Skip
.
Beachten Sie, dass die Anzahl der übersprungenen Objekte auf ganzen Zahlen basiert (positive ganze Zahlen ohne Dezimalstellen), die in diesem Fall
100
sind.

Führen Sie nun den folgenden Befehl aus, um eine Liste der Inhalte des Arbeitsverzeichnisses (Get-ChildItem
) zu erhalten, aber überspringen Sie die letzten 100
zurückgegebenen Objekte mit -SkipLast
.

Auswahl der ersten oder letzten Anzahl von Objekten
Abgesehen davon, dass Sie die ersten und letzten Objekte überspringen können, könnten Sie auch daran interessiert sein, stattdessen die ersten und letzten Objekte auszuwählen. Das Cmdlet Select-Object
unterstützt dieses Feature mit den Parametern First
und Last
, die es Ihnen ermöglichen, alles andere zu überspringen, um Zeit und Ressourcen zu sparen.
Führen Sie den folgenden Befehl aus, um alle Prozesse abzurufen, aber nur die ersten -First 10
zurückgegebenen Objekte auszuwählen.

Führen Sie nun den folgenden Befehl aus, um alle Inhalte des Arbeitsverzeichnisses (Get-ChildItem
) abzurufen, aber nur die letzten -Last 10
zurückgegebenen Objekte auszuwählen.

Auswahl ausschließlich eindeutiger Objekte
Bei der Arbeit mit größeren Datensätzen werden Sie auf Duplikate stoßen, die Sie möglicherweise aus der Ausgabe ausschließen möchten, was üblich ist. Aber das Gute am Cmdlet Select-Object
ist, dass Sie Duplikatwerte nicht manuell ausschließen müssen.
Das Anhängen des Parameters -Unique
ermöglicht es Ihnen, nur die eindeutigen Objekte aus der Ausgabe auszuwählen, was Ihre Analyse optimiert und die Genauigkeit Ihrer Ergebnisse verbessert.
Führen Sie den folgenden Befehl aus, um auszuwählen (Select-Object
) und die ersten -First 2
Objekte zurückzugeben.
Unten sehen Sie zwei zurückgegebene Objekte, unabhängig davon, ob eines davon ein Duplikatwert ist.

Führen Sie abschließend den folgenden Befehl aus, um jeweils nur einen -Unique
Wert für jedes der ausgewählten -First 2
Objekte zurückzugeben.
Dieses Mal sehen Sie nur eines der ersten beiden ausgewählten Objekte zurückgegeben, da das andere nur ein doppelter Wert ist. Wie Sie sehen, beweist diese Ausgabe, dass das `-Unique`-Parameter praktisch ist, um schnell doppelte Objekte in Ihren Daten zu verwerfen.

Schlussfolgerung
PowerShell neigt dazu, eine Überlastung von Informationen zu erzeugen. Aber in diesem Tutorial haben Sie gelernt, wie das PowerShell-Select-Object
-Cmdlet Ihre Daten vereinfacht, um nur die benötigten Informationen anzuzeigen.
Sie haben gesehen, wie verschiedene Parameter es Ihnen ermöglichen, Daten auszuwählen und auszuschließen, insbesondere doppelte Werte aus einer Ausgabe. Mit dem Select-Object
-Cmdlet muss das Verwalten großer Datenmengen keine entmutigende Aufgabe sein.
Zu diesem Zeitpunkt können Sie Ihre Ergebnisse schnell verfeinern, um sie besser für Analyse und Fehlerbehebung geeignet zu machen. Aber warum nicht lernen, wie Sie Ihre berechneten Eigenschaften formatieren, um Lesbarkeit und Benutzerfreundlichkeit zu verbessern?
Source:
https://adamtheautomator.com/powershell-select-object/