Filtern und Isolieren von PowerShell-Objekten

  1. Übersicht über PowerShell-Objekte
  2. Filtern der Ausgabe mit PowerShell
Filtern und Isolieren von PowerShell-Objekten

In Windows PowerShell werden die meisten Ergebnisse beim Ausführen von Get-Anforderungen üblicherweise im PowerShell-Objektformat (PSObject) erstellt und angezeigt. PSObjects ist eine der kritischen Funktionen von PowerShell, die es von den übrigen Skriptsprachen unterscheidet.

Wir konnten jedoch ein PSObject aufgrund seiner Attribute nicht schnell durchsuchen, und daher müssen wir die Attribute isolieren, bevor wir einen Suchindex erstellen. In diesem Artikel werden wir über Windows PowerShell-Objekte sprechen, wie das Ergebnis des PS-Objekts analysiert wird, damit die Ergebnisse durchsuchbar sind, und eine ordnungsgemäße Filterung mit PowerShell durchführen.

Übersicht über PowerShell-Objekte

Wie bereits erwähnt, sind PowerShell-Objekte eines der Highlights der Skriptsprache. Jedes PowerShell-Objekt verfügt über Attribute, die das Objekt als Ganzes definieren.

Nehmen wir als Beispiel Get-Service.

Beispielcode:

Get-Service

Ausgabe:

Status   Name               DisplayName
------   ----               -----------
Running  AarSvc_147d22      Agent Activation Runtime_147d22
Running  AdobeARMservice    Adobe Acrobat Update Service
Running  AESMService        Intel® SGX AESM

Innerhalb der PowerShell-Objekte Get-Service haben wir Status, Name und DisplayName als Attribute. Um Objekte herauszufiltern, müssen wir das Objekt mit dem Befehl Where-Object zwischen seinen Attributen isolieren.

Beispielsweise können wir nur den Typ Status oder den Typ Name erhalten, aber wir können nicht einfach nach einem bestimmten Schlüsselwort suchen, ohne zuerst das Attribut aufzurufen.

Beispielcode:

Get-Service | Where-Object {$_.Status -match "Stopped" }

Ausgabe:

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity

Im nächsten Abschnitt des Artikels besprechen wir, wie wir diese Ausgaben als Zeichenfolge anstelle eines PS-Objektformats anzeigen und eine Filterung mit verschiedenen Suchanfragen durchführen können.

Filtern der Ausgabe mit PowerShell

Um die Ausgabe schnell zu filtern, müssen wir die Ausgabe im String-Format anzeigen. Wir müssen den Befehl an den Befehl Out-String weiterleiten.

Für das folgende Beispiel werden wir es einer Variablen zuweisen, um unser nächstes Code-Snippet zu vereinfachen.

Beispielcode:

$serviceOutput = (Get-Service | Out-String) -split "`r`n"

Der obige Code liefert kein Ergebnis, da der Wert in der Variablen gespeichert ist. Außerdem haben wir eine kleine Zeichenfolgenoperation durchgeführt, um die Ergebnisse Zeile für Zeile zu teilen.

Wenn wir später filtern, zeigt das Skript es Zeile für Zeile an, anstatt nur eine ganze Zeichenfolge.

Der in der Variablen $serviceOutput gespeicherte Wert ist im String-Format. Um nach dem Schlüsselwort zu suchen, müssen wir den Befehl Select-String zusammen mit dem Schlüsselwort, nach dem wir suchen möchten, leiten.

Beispielcode:

$serviceOutput | Select-String Intel

Ausgabe:

Running  AESMService        Intel® SGX AESM
Stopped  Intel(R) Capabi... Intel(R) Capability Licensing Servi...
Stopped  Intel(R) TPM Pr... Intel(R) TPM Provisioning Service
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Verwandter Artikel - PowerShell Object