gpt4 book ai didi

powershell - 我们如何识别由不同对象打开的两个excel.exe进程?

转载 作者:行者123 更新时间:2023-12-03 01:20:51 25 4
gpt4 key购买 nike

我有一个正在处理Excel工作簿的.vbs文件。现在假设在系统3个EXCEL.EXE进程正在运行的情况下,所以现在有什么方法可以找到由main.vbs脚本打开的那个吗?

最佳答案

即使您标记了此Powershell,这还是一个VBS唯一的选项,可能会需要根据您的Excel版本进行一些修改(我在这台PC上有2003):

'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,则该过程将在process命令行属性中包含 C:\example.xls

关于powershell - 我们如何识别由不同对象打开的两个excel.exe进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14108674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com