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
gibt es eine Möglichkeit, in einem Visual Basic Script die eigene Process ID (des Scripts) abzufragen?
Danke für eine gute Antwort
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 51673
Url: https://administrator.de/forum/vbs-eigene-process-id-51673.html
Ausgedruckt am: 17.05.2025 um 09:05 Uhr
3 Kommentare
Neuester Kommentar
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:
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]
Ü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
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]
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
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