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"
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
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
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