www.IT-Visions.de-Diskussionsforen (Version 2.1)
(Diese Seite wurde noch nicht auf das neue Layout umgestellt!)


Diese Foren stehen den Lesern unserer Bücher und allen anderen registrieren Benutzern dieser Website zur Verfügung. Wir würden uns freuen, wenn viele Nutzer dieser Website hier nicht nur Fragen stellen, sondern auch die Fragen anderer Nutzer beantworten. Diese Foren sind ein ehrenamtlicher, nicht-kommerzieller, unmoderierter Community-Dienst von www.IT-Visions.de. Wenn Sie kommerzielle Unterstützung für .NET/Scripting/PowerShell suchen, schauen Sie bitte auf unser Support-Angebot und unsere Schulungsangebote für Scripting und Schulungsangebote für .NET.



Child-Prozesse finden
Autor:  KlausStuber
E-mail:  Antworten bitte nur in das Forum!
Datum:  27.04.2011 16:23:46
Subject:  Child-Prozesse finden
Bezug zum Buch: 
Message:  Hallo .Net/PS-Profis,

ich hoffe jemand kann mir weiterhelfen:

Ich suche nach einer Möglichkeit, alle Child-Prozesse zu finden, die von einem bestimmten Master-Prozess gestartet wurden.

Problematik:

Auf einem WindowsServer 2003 laufen 2 Listener mit unterschiedlichem Namen (Listener1, Listener2), die wiederum mehrere Prozesse gleichen Namens (ChildProzess) starten. Nun soll per Skript einer der Listener mit allen seinen ChildProzessen gestoppt werden. Da die ChildProzesse aber alle gleich heißen, weiß ich bei Get-Process nicht welcher ChildProzess zu welchem Listener gehört.
Mein erster Ansatz war, mit „$m = Get-WmiObject -class win32_process -filter ("Name='Listener1.exe' )“ die ProzessID des Listeners zu ermitteln und dann mit „$c = Get-WmiObject -class win32_process -filter ("ParentProcessId=" + $m.ProcessId) alle ChildProzesse zu ermitteln. Das ging allerdings beim 2. Lauf richtig schief. Das Problem hierbei ist, dass beim beenden eines Prozesses nicht immer die ChildProzesse mit beendet werden. Somit gibt es Prozesse mit einer ParentProcessId, die nicht mehr aktiv und somit frei ist. Wird nun ein anderes Programm gestartet, kann es passieren, dass diese freie ProzessID wieder verwendet wird (wie in meinem Fall geschehen).
Dadurch bekam ich zu dem Listener-Prozess mit meiner Abfrage ChildProzesse geliefert, die mit meiner Anwendung überhaupt nichts zu tun haben.

Kann mir einer sagen, wie ich die ChildProzesse eines MasterProzesses richtig ermittle?
(Der ProcessExplorer zeigt es ja auch richtig an!!)

Antworten

  Zurück zum Forum



 Scripting mit der PowerShell -- Microsoft PowerShell (ehemals Microsoft Shell, Codename Monad)
 Child-Prozesse finden von KlausStuber  am 27.4.2011 4:23:46 PM


www.IT-Visions.de - Dr. Holger Schwichtenberg / 1998-2019