Den Dienstnamen aus seiner PID ermitteln (PowerShell)

Den Dienstnamen aus seiner PID ermitteln (PowerShell)

Ich habe Probleme, ein kleines Problem zu lösen. Für Prozesse kann ich ihren Namen anhand ihrer $PID mit der folgenden Zeile speichern:

$process_name=get-Process -id $PID |Auswahl -expand Name

Ich möchte den Prozess jedoch alsService. Ich möchte dieselbe Operation durchführen, das heißt: den Namen des Dienstes, z. B. [service_name].exe, in einer Variablen $service_name speichern.

Der Grund dafür ist, dass ich nur eine .ps1-Datei haben möchte, die ich dann in mehrere Dienste umwandeln kann, die jeweils ihre eigenen .exe.config-Dateien verwenden. So kann nur eine .ps1-Datei mehrfach in Dienste wie

[service1.exe, service2.exe, service3.exe, ...]

und jeder Dienst verwendet seine entsprechende .exe.config-Datei wie

[service1.exe.config, service2.exe.config, service3.exe.config, ...]

Gibt es eine Möglichkeit, dies mit Powershell zu tun?

Antwort1

Sie können die Serviceinformationen von Processid erhalten.

(Get-WmiObject Win32_Service -Filter "ProcessId='$PID'")

Antwort2

Mit Get-WmiObject können Sie die ausführbaren Dateien sammeln:

(Get-WmiObject win32_service | Where-Object -Property Name -Like *wallet*).PathName

In diesem Beispiel wird der Name der ausführbaren Datei zusammen mit allen Schaltern angezeigt. Wenn Sie dies in einer Variablen festhalten möchten, versuchen Sie Folgendes:

$proc_name = (Get-WmiObject win32_service | Where-Object -Property Name -Like *wallet*).PathName

Wenn Sie erweiterte Eigenschaftsinformationen benötigen, versuchen Sie Folgendes:

Get-WmiObject win32_service | ?{$_.Name -like '*wallet*'} | Select-Object -Property *

Antwort3

Hier ist eine andere Möglichkeit – die oben genannten könnten zuverlässiger sein?

$id = 5556
# (debugging) Nice little table to make sure you've got the right thing...
Get-Process | Where-Object Id -EQ $id | Select ProcessName,Id | Format-Table    
 
# Finally just hand me back the name proper
Get-Process | Where-Object Id -EQ $id | Select -Expand ProcessName 
# Depending on what you're doing with it...
# Stop-Process -Id $id

verwandte Informationen