mschyska

VBS - Eigene Process ID

Hallo,

gibt es eine Möglichkeit, in einem Visual Basic Script die eigene Process ID (des Scripts) abzufragen?

Danke für eine gute Antwort
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 51673

Url: https://administrator.de/forum/vbs-eigene-process-id-51673.html

Ausgedruckt am: 17.05.2025 um 09:05 Uhr

bastla
bastla 14.02.2007 um 16:54:27 Uhr
Goto Top
Hallo MSchyska und willkommen im Forum!

Über WMI lässt sich eine Auflistung der laufenden Prozesse erhalten. In einer "For Each"-Schleife können die passenden Prozesse näher untersucht und zB die Eigenschaft "CommandLine", welche den ScriptName enthält, zur Identifizierung verwendet werden. Schematisch sähe das etwa so aus:
strComputer = "."  
strProcess = "script.exe"  
strComm = LCase(WScript.ScriptName)

Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
Set colProcesses = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name Like '%" & strProcess & "%'")  

msg = ""  
For Each objProcess In colProcesses
	If Instr(LCase(objProcess.CommandLine), strComm) Then
		If msg = "" Then  
			msg = objProcess.ProcessID & " - " & objProcess.CommandLine  
		Else
			msg = msg & vbCrLF & objProcess.ProcessID & " - " & objProcess.CommandLine  
		End If
	End If
Next
WScript.Echo msg
Die Ausgabe ist auf mehrere gefundene Instanzen hin ausgelegt. Bei Bedarf ließen diese sich zumindest zeitlich einordnen (Eigenschaft "CreationDate").

Gefunden werden sowohl über "WScript.exe" als auch über "CScript.exe" gestartete Scripts.

Grüße
bastla

[Edit] Abfrage auf "Like" umgestellt, sodass unabhängig vom Script-Interpreter; Hinweis auf "CreationDate" ergänzt [/Edit]
MSchyska
MSchyska 16.02.2007 um 08:51:32 Uhr
Goto Top
Hallo bastla,

vielen Dank für die schnelle Antwort.

Das Skript funktioniert unter Windows 2003, aber nicht unter Windows 2000 (Abbruch mit Exception). Gibt es eine Variante für Windows 2000?

Grüße

MSchyska
bastla
bastla 16.02.2007 um 09:12:01 Uhr
Goto Top
Hallo MSchyska!

Sieht so aus, als würde W2000 die Eigenschaft ".CommandLine" noch nicht bereitstellen - ".ExecutablePath" liefert nur den Pfad des Interpreters zurück, sodass Du also alle laufenden Scripts finden kannst, aber Dir vermutlich zur Identifizierung (zB des als letztes gestarteten) nur noch ".CreationDate" bleiben würde ...

Grüße
bastla