Wie kann ich den übergeordneten Prozess einer cmd.exe bestimmen?

7

Manchmal befinde ich mich in einer cmd.exe- Umgebung, die selbst von einer anderen cmd.exe oder einer anderen konsolenbasierten Anwendung gestartet wurde . Wenn ich jetzt in einer solchen Umgebung arbeite, möchte ich wissen, was passiert, wenn ich tippe exit, dh wenn das Fenster cmd.exe verschwindet oder wenn es zu cmd.exe oder der Anwendung zurückkehrt, die es aufgerufen hat. Das natürlich, weil ich manchmal, wenn ich in cmd.exe arbeite, vergesse, wie ich es genannt habe.

Gibt es also eine Möglichkeit, den übergeordneten Prozess (wenn dies der richtige Begriff ist) einer cmd.exe innerhalb einer anderen cmd.exe herauszufinden ?

René Nyffenegger
quelle
2
"Elternprozess" ist korrekte Terminologie, aber ich glaube nicht, dass "Terminus" ...
Quacksalber Quixote

Antworten:

6

Sie können WMI verwenden, um diese Informationen abzurufen. Die Win32_ProcessKlasse enthältParentProcessId

Also (Verwenden von PowerShell zum Ausführen von WMI-Befehlen - andere WMI-Tools sind verfügbar):

gwmi Win32_Process -filter 'processid = 1234' | select ParentProcessId

gibt die übergeordnete Prozess-ID von Prozess 1234 an.

Richard
quelle
Ich habe es nicht versucht, aber das klingt richtig. Upvoted.
Alex
(gwmi win32_process | ? processid -eq $pid).parentprocessid($ pid enthält die aktuelle Prozess-ID)
Luke Sampson
@LukeSampson Warum alle Prozesse abrufen und dann filtern, wenn WMI die Filterung an der Quelle für Sie durchführen kann? (Das heißt, verwenden Sie die Variable im -filterParameter von Get-WmiObject( gwmi) anstelle eines separaten Where-Object( ?).)
Richard
1
@ Richard, weil ich faul bin und nichts über einen speziellen Parameter lernen möchte? Trotzdem danke für deine Antwort, es hat mir geholfen :)
Luke Sampson
1

Dies erfolgt nicht innerhalb von cmd.exe selbst, aber der Prozess-Explorer verfügt über eine Baumansicht, in der übergeordnete Prozesse angezeigt werden.

Alt-Text

Shevek
quelle
2
Ja, das ist sicherlich richtig, aber ich hoffte, dass es einen Befehl oder etwas geben würde, das ich in cmd.exe eingeben könnte.
René Nyffenegger
1
Ein anderes SysInternals-Tool, pslist.exe , kann ebenfalls eine Baumansicht bereitstellen. Leider ist PPID (übergeordnete Prozess-ID) nicht Teil der allgemeinen Ausgabe. Wenn das cmd- Fenster jedoch von einer anderen Anwendung gestartet wurde, sollte die Baumansicht diese Beziehung anzeigen. technet.microsoft.com/en-us/sysinternals/bb896682.aspx
Quacksalber 17.