Wie erhalte ich den Befehl, der eine Aufgabe mit Aufgabenliste aufgerufen hat?

Wie erhalte ich den Befehl, der eine Aufgabe mit Aufgabenliste aufgerufen hat?

Der Windows-Task-Manager hat eine Spalte mit der BezeichnungBefehlszeileHier wird der Befehl mit allen Schaltern und Parametern angezeigt, der die angegebene Aufgabe gestartet hat. Beispiel:

test.exe -V -A 127.0.0.1 -P 6062

Jetzt muss ich eine bestimmte Aufgabe identifizieren, die auf einem bestimmten Port lauscht und/oder mit einer bestimmten Schalterkombination aufgerufen wurde. Mein Ziel ist es, die ausgewählte Aufgabe zu schließen, aber nicht andere. Wenn also mehrere test.exeAufgaben ausgeführt werden, kann ich nicht einfach alle Aufgaben schließen, die zurückgegeben werden von:

tasklist /fo csv /nh /fi "imagename eq test.exe"

Leider scheint es weder tasklistnoch pslist(Hier) ist in der Lage, dieBefehlszeileFeld. Wie kann ich dieses Problem lösen?

Antwort1

Wie wäre es mit diesem:

wmic process where caption="test.exe" get commandline

Und wenn Sie dies tun, erhalten Sie auch die zu beendende Prozesskennung:

wmic process where caption="test.exe" get commandline,processid

wmichat auch einen Schalter zur Ausgabe in CSV. Also:

wmic /output:c:\temp\proc.csv process where caption="test.exe" get commandline,processid /format:csv

Hinweis: Wenn Sie beim letzten einen Fehler erhalten ( Invalid XSL format (or) file name), müssen Sie csv.xmlvon %WINDIR%\System32\wbem\en-USnach kopieren %WINDIR%\System32\wbem. Sie können über diesen Fehler lesenHier.


Sie können auch PowerShell verwenden:

Get-WmiObject win32_process -Filter "name like '%test.exe'"|select CreationDate,ProcessId,CommandLine|ft -AutoSize`

Antwort2

Powershell 7:

get-process test | % commandline

Antwort3

Zumindest unter Windows 11 funktionierte die obige Top-Antwort nicht, da die wmic processAusgabe keine Spalte „Beschriftung“ enthält und daher kein Ergebnis gefunden wurde. (Und ja, mir ist klar, dass wmic unter Windows 11 veraltet ist. Es funktioniert aber immer noch.)

Stattdessen gibt es tatsächlich andere Spalten, die Sie für diese WHERE-Klausel verwenden könnten, und diese sind mit wmic verfügbar process list /?. Dazu gehören natürlich name(für den Prozessnamen) – und die processidoben erwähnte (für die PID), also hat das hier für mich stattdessen funktioniert:

wmic process where name="test.exe" get commandline,processid

Eine Sache noch:Ich habe festgestellt, dass ich eine Eingabeaufforderung mit erhöhten Rechten (als Administrator) ausführen musste, um die Befehlszeile anzuzeigen. Andernfalls zeigte die Ausgabe die Befehlszeile als leer an:

CommandLine  ProcessId
             10496

verwandte Informationen