Verwenden des Cmdlet \"Select-Object\"

Auswählen bestimmter Eigenschaften eines Objekts

Eine der besonders nützlichen Eigenschaften des Cmdlet Select-Object besteht darin, sich eine ausgewählte Anzahl an Objekten vom Anfang (oder vom Ende) einer sortierten Auflistung zu greifen. Nehmen wir beispielsweise an, Sie verwenden das Cmdlet Get-ChildItem, um eine Liste aller Dateien im Ordner "C:\Windows" zu ermitteln. Sie übergeben diese Informationen an das Cmdlet Sort-Object und sortieren die Dateien nach Größe (Länge). Nehmen wir nun an, Sie möchten nur Informationen über die drei größten Dateien in diesem Ordner ermitteln. Wie bestimmen Sie diese Informationen?

Gehen Sie folgendermaßen vor:

Get-ChildItem c:\windows\*.* | Sort-Object length -descending | Select-Object -first 3

Nachdem Sie die Auflistung in absteigender Reihenfolge sortiert haben, befindet sich die größte Datei ganz oben und die kleinste Datei ganz unten. Um nun die drei größten Dateien in der Auflistung zu bestimmen, rufen Sie einfach das Cmdlet Select-Object auf und fügen den Parameter –first hinzu. Geben Sie dabei die Anzahl der Element an, die zurückgegeben werden soll. Mit anderen Worten:

Select-Object -first 3

Was tun Sie, wenn Sie die drei kleinsten Dateien ermitteln möchten? Nun,da sich diese drei Dateien ganz unten in der Liste befinden, verwenden Sie einfach den Parameter –last wie folgt:

Get-ChildItem c:\windows\*.* | Sort-Object length -descending | Select-Object -last 3

Sie können Select-Object auch verwenden, um anzugeben, dass nur ausgewählte Eigenschaften eines Objekts in dem Befehl verwendet werden sollen (beispielsweise, dass nur bestimmte Eigenschaften am Bildschirm angezeigt werden). Wenn Sie beispielsweise das Cmdlet Get-Process ausführen und an Format-List übergeben, erhalten Sie standardmäßig etwa Folgendes:

Id      : 1924
Handles : 273
CPU     : 2.046875
Name    : svchost

Aber was ist, wenn Sie eigentlich nur Prozessname und -kennung anzeigen wollten? Das ist kein Problem: Übergeben Sie die Prozessinformationen einfach an Select-Object. Das Cmdlet ermittelt dann nur die Eigenschaften "Name "und "ID":

Get-Process | Select-Object name,id | Format-List

Was wird Ihnen dazu angezeigt? Die Ausgabe sieht wie folgt aus:

Name : atiptaxx
Id   : 2440

Name : BTStackServer
Id   : 524

Um sicherzustellen, dass Sie alle Eigenschaften und Eigenschaftswerte erhalten, verwenden Sie ein Platzhalterzeichen. Mit diesem Befehl rufen Sie Prozessinformationen ab und zeigen alle Eigenschaften in einer Liste an:

Get-Process | Select-Object *

Noch eine Aufgabe: Nehmen wir an, Sie wollten alle Eigenschaften angezeigt haben, außer für "Site" und "Container". Kein Problem: Fügen Sie einfach den Parameter –exclude hinzu, und geben Sie die Eigenschaften an, die aus dem zurückgegebenen Dataset ausgeschlossen sein sollen:

Get-Process | Select-Object * -exclude site,container

Aliase für "Select-Object"

  • select