Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBS - Eigene Process ID

Frage Entwicklung VB for Applications

Mitglied: MSchyska

MSchyska (Level 1) - Jetzt verbinden

14.02.2007, aktualisiert 16.02.2007, 6126 Aufrufe, 3 Kommentare

Hallo,

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

Danke für eine gute Antwort
Mitglied: bastla
14.02.2007 um 16:54 Uhr
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:
01.
strComputer = "." 
02.
strProcess = "script.exe" 
03.
strComm = LCase(WScript.ScriptName) 
04.
 
05.
Set objWMIService = GetObject("winmgmts:" _ 
06.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
07.
Set colProcesses = objWMIService.ExecQuery _ 
08.
    ("Select * from Win32_Process Where Name Like '%" & strProcess & "%'") 
09.
 
10.
msg = "" 
11.
For Each objProcess In colProcesses 
12.
	If Instr(LCase(objProcess.CommandLine), strComm) Then 
13.
		If msg = "" Then 
14.
			msg = objProcess.ProcessID & " - " & objProcess.CommandLine 
15.
		Else 
16.
			msg = msg & vbCrLF & objProcess.ProcessID & " - " & objProcess.CommandLine 
17.
		End If 
18.
	End If 
19.
Next 
20.
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]
Bitte warten ..
Mitglied: MSchyska
16.02.2007 um 08:51 Uhr
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
Bitte warten ..
Mitglied: bastla
16.02.2007 um 09:12 Uhr
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
Bitte warten ..
Ähnliche Inhalte
Installation
Eigene Software via GPO ausrollen (5)

Frage von Herbrich19 zum Thema Installation ...

Apple
gelöst Eigene website (31)

Frage von Maralind zum Thema Apple ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Firewall
Welche Firewall ? (18)

Frage von Cyberurmel zum Thema Firewall ...

Windows Server
gelöst Einzelnes Windows Update über GPO deinstallieren (16)

Frage von lordofremixes zum Thema Windows Server ...

Windows Server
GPO zum Deinstallieren von Office Update wird nicht ausgeführt (15)

Frage von lordofremixes zum Thema Windows Server ...