wake-up-neo.com

Wie kann ich mit PowerShell den "Pfad zur ausführbaren Datei" aller Dienste extrahieren?

Get-Service *sql* | sort DisplayName | out-file c:/servicelist.txt

Ich habe ein einzeiliges PowerShell-Skript zum Extrahieren einer Liste aller auf meinem lokalen Computer ausgeführten Dienste. Zusätzlich zur Anzeige von "Status", "Name" und "DisplayName" möchte ich auch anzeigen. "Pfad zur ausführbaren Datei"

43
Abilash A

Ich denke, Sie müssen auf WMI zurückgreifen:

Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, State, PathName

Update Wenn Sie die ausgewählten Daten bearbeiten möchten, können Sie die berechneten Eigenschaften wie beschrieben verwenden hier .

Wenn Sie beispielsweise nur den Text in Anführungszeichen für den Pfadnamen möchten, können Sie doppelte Anführungszeichen verwenden und das Array-Element 1 verwenden:

Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}} | Format-List
59
David Martin

Eine Variante der WMI-Abfrage, die möglicherweise schneller ist (ich musste dies nur für einen SCCM Client) tun)

$SQLService=(get-wmiobject -Query 'Select * from win32_service where Name like "*SQL*"') | Select-object Name, DisplayName, State, Pathname

Der andere Trick besteht darin, nach mehreren SQL-Ergebnissen zu suchen, wenn Sie die Pfadnamen ohne doppelte Anführungszeichen möchten (damit Sie darauf reagieren können).

$SQLService | Select-Object Name, DisplayName, State, @{Name='PathName';Expression=$_.Pathname.replace('"','')}

Der große Vorteil bei der Verwendung von -query in dem get-wmiobject (oder get-ciminstance) ist die Verarbeitungsgeschwindigkeit. Das ältere Beispiel erhält eine vollständige Liste und filtert dann, während das letztere eine sehr direkte Liste erfasst.

Nur zwei Cent hinzufügen :)

Prost alle! Sean The Energized Tech

4
user7371585

Sie können auch das Muster für reguläre Ausdrücke verwenden und das Ergebnis in eine Datei kopieren.

Get-WmiObject win32_service | ?{$_.Name -match '^sql'} | select Name, DisplayName, State, PathName >> C:\temp\sqlservices.txt
0
Aidar Gatin