2013-01-01 72 views

回答

1

使用Get-WMIObject win32_process得到所有進程的列表。查看ParentProcessId成員以查看哪個進程生成了哪個Excel實例。

VB腳本通過WScript的或CScript將執行,所以你需要在正確的父母先看看。

請注意,Windows不會回收進程標識。也就是說,在時刻t0,pid1000不一定是與時刻t1相同的處理。

附錄:

使用-Computername切換到另一個指定的WMI查詢的計算機。如果沒有-Computername交換機,則假定爲localhost。本地主機也被稱爲.,它在上面的VBScript答案中使用。像這樣,

#Get process list from Server01, assuming you have sufficient rights 
Get-WMIObject win32_process -Computername server01 
+0

我想要全局運行這個腳本,所以我怎麼能夠在那裏給他們的計算機名稱,就像你的link.please指南中提到的'code' – CodeLover

+0

Excel作爲一個COM服務器運行,其中ppid = winlogon.exe ,而不是VBS過程。 – EJP

2

即使你標記這個PowerShell的,這裏有一個VBS唯一的選擇將可能需要根據您的Excel版本的一些修修補補(我有2003對這個PC):

'Create Excel Application for demo purposes only 
Dim ex: Set ex = CreateObject("Excel.Application") 
Dim objWMIService, objProcess, colProcess 
Dim strComputer, strList 

strComputer = "." 'Change if you want to run on another computer 

Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" _ 
& strComputer & "\root\cimv2") 

'Look only at Excel process name 
Set colProcess = objWMIService.ExecQuery _ 
("Select * from Win32_Process Where NAME = 'EXCEL.exe'") 

'Get the list of Processes, included only for demo purposes 
For Each objProcess In colProcess 
    strList = strList & vbCr & objProcess.commandline 
Next 
MsgBox strList ' Displayed "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" 
          '"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"/automation - Embedding 
       ' Second row was the created Object. 

'Find processes that match the Created Object format commandline 
Set colProcess = objWMIService.ExecQuery _ 
("Select * from Win32_Process Where CommandLine Like '%EXCEL.exe"" /automation -Embedding'") 
For Each objProcess In colProcess 
    'Do something with process 
    objProcess.Terminate 
Next 
'Next line will cause runtime error due to process already being terminated. 
ex.Quit 

美與此類似的方法是,通過使用objProcess.Commandline,您可以找到發送到應用程序的命令行開關,您可以使用它來查明特定的進程。例如,如果您有一個.bat文件來打開Excel文件,如下所示:start Excel.exe C:\example.xls該進程將在進程Commandline屬性中包含C:\example.xls

+0

我有疑問!我的腳本會遍佈世界各地,所以我很難獲得'strComputer'的價值。有沒有機會避免相同? – CodeLover

+0

如果您不知道計算機運行在哪臺計算機上,您會如何在計算機上運行腳本?我想我不明白這個問題。 '.'將指腳本運行的計算機。 –

+0

讓我自己清楚這一點。我需要在該參數上提供「計算機」名稱嗎?和FYI我正在使用EXCEL 2010 – CodeLover

相關問題