嗨,Scripting Guy!如何知道哪些腳本正在計算機上運行?
-- NW
嗨,NW。這個(gè)問(wèn)題我們通常不大愿意回答,因為有 50% 的概率您可能對所聽(tīng)到的解答感到不滿(mǎn)意。如果運行的是 Windows 2000(或 Windows 的以前版本),那么答案很簡(jiǎn)單:辦不到。諸如下方的腳本——可查找在 Cscript.exe 或 Wscript.exe 下運行的所有進(jìn)程——可以告訴您有腳本正在計算機上運行:
strComputer = "."Set objWMIService = GetObject("winmgmts:" _& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _("Select * from Win32_Process Where Name = ‘cscript.exe‘" & _" OR Name = ‘wscript.exe‘")For Each objItem in colItemsWscript.Echo objItem.NameNext但是,該腳本無(wú)法告訴您相關(guān)腳本的名稱(chēng)。實(shí)際上,據我們所知,操作系統中內置的程序無(wú)法識別在 Windows 2000 計算機上運行的各個(gè)腳本;即便任務(wù)管理器也只能進(jìn)程名稱(chēng)(Cscript.exe 和 Wscript.exe)。
但是,如果運行的是 Windows XP 或 Windows Server 2003,那么我們就可以為您提供不同——更好的——的解答。Windows XP 對 Win32_Process 類(lèi)別添加了一個(gè)新的屬性——CommandLine。正如其名,CommandLine 可告訴您用以啟動(dòng)進(jìn)程的確切命令。例如,假設您在命令提示符中通過(guò)鍵入 cscript my_script.vbs 來(lái)啟動(dòng)一個(gè)腳本。該腳本的 CommandLine 屬性將為:
cscript my_script.vbs
換句話(huà)說(shuō),現在您已經(jīng)知道名為 My_Script.vbs 的腳本正在計算機上運行。
但是如果不使用命令提示符來(lái)啟動(dòng)腳本又如何?如果在 Windows 資源管理器中雙擊文件圖標并在 Wscript 下運行該腳本又會(huì )怎么樣?沒(méi)有問(wèn)題。假如雙擊文件 C:\Scripts\My_Script.vbs;將得到如下的 CommandLine 值:
C:\WINDOWS\System32\WScript.exe "C:\Scripts\My_Script.vbs"
正如您所看到,我們得到了 Wscript 可執行文件的路徑以及正在運行的腳本的路徑?,F在差不多了吧?
無(wú)論如何,如果運行的是 Windows XP 或 Windows Server 2003,那么這里有一個(gè)腳本可以幫您實(shí)現這一技巧:
strComputer = "."Set objWMIService = GetObject("winmgmts:" _& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _("Select * from Win32_Process Where Name = ‘cscript.exe‘" & _" OR Name = ‘wscript.exe‘")For Each objItem in colItemsWscript.Echo objItem.CommandLineNext聯(lián)系客服