VBScript Win32_Process 类
最后修改于 2025 年 4 月 9 日
VBScript 中的 Win32_Process
类通过 WMI 提供对 Windows 进程管理的访问。它允许在本地或远程系统上查询、创建和终止进程。此类是 Windows Management Instrumentation (WMI) 基础结构的一部分。它提供了丰富的进程相关信息和控制功能。
Win32_Process
使系统管理员能够自动化进程管理任务。它可以检索详细的进程属性,如内存使用情况、执行时间和命令行参数。本教程将通过实际示例介绍 Win32_Process
的用法。
Win32_Process 类概述
Win32_Process
类代表 Windows 系统上的一个进程。它包含 ProcessId、Name、ExecutablePath 和 CommandLine 等属性。方法包括用于启动进程的 Create 和用于停止进程的 Terminate。
主要功能包括远程管理和详细的进程统计信息。该类需要通过 `GetObject` 和 "winmgmts:" 别名来连接 WMI。理解此类有助于创建健壮的进程管理脚本。
列出所有正在运行的进程
此示例演示了如何列出系统上所有正在运行的进程。它展示了基本的 WMI 连接设置和进程枚举。脚本检索所有活动进程的进程名称和 ID。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colProcesses = objWMIService.ExecQuery("Select * From Win32_Process") For Each objProcess in colProcesses WScript.Echo "Process: " & objProcess.Name & " (ID: " & objProcess.ProcessId & ")" Next
脚本连接到 WMI 服务并查询所有 Win32_Process 实例。然后它遍历集合,显示每个进程的名称和 ID。这提供了类似于任务管理器进程选项卡的(基本)进程列表。
创建新进程
此示例展示了如何使用 Win32_Process 创建新进程。它会启动记事本(Notepad.exe)并带有指定的参数。Create 方法返回进程 ID 和执行状态。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set objProcess = objWMIService.Get("Win32_Process") strCommand = "notepad.exe C:\temp\notes.txt" intReturn = objProcess.Create(strCommand, Null, Null, intProcessID) If intReturn = 0 Then WScript.Echo "Process created with ID: " & intProcessID Else WScript.Echo "Process creation failed. Error: " & intReturn End If
脚本连接到 WMI 并获取 Win32_Process 类。它调用 Create 并传入要执行的命令行。该方法成功时返回 0,并将进程 ID 填充到变量中。错误代码表示各种失败情况。
按 ID 终止进程
此示例演示了如何按进程 ID 终止进程。它展示了如何强制结束正在运行的进程。Terminate 方法会立即停止执行。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colProcesses = objWMIService.ExecQuery("Select * From Win32_Process Where ProcessId = 1234") For Each objProcess in colProcesses intReturn = objProcess.Terminate(0) If intReturn = 0 Then WScript.Echo "Process terminated successfully" Else WScript.Echo "Failed to terminate process. Error: " & intReturn End If Next
脚本查询特定的进程 ID(将 1234 替换为实际 ID)。它在匹配的进程上调用 Terminate。该方法成功时返回 0。这种方法可以精确地终止进程而不会影响其他进程。
获取进程内存使用情况
此示例检索所有进程的内存使用情况信息。它展示了如何访问与性能相关的属性。脚本显示工作集大小和虚拟内存使用情况。
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colProcesses = objWMIService.ExecQuery("Select * From Win32_Process") For Each objProcess in colProcesses WScript.Echo "Process: " & objProcess.Name WScript.Echo " Working Set: " & objProcess.WorkingSetSize & " bytes" WScript.Echo " Virtual Size: " & objProcess.VirtualSize & " bytes" Next
脚本枚举所有进程并显示内存统计信息。WorkingSetSize 显示物理内存使用情况。VirtualSize 指示已分配的虚拟内存。这些指标有助于识别资源密集型进程。
按名称查找进程
此示例演示了如何按可执行文件名搜索进程。它使用带有 WHERE 子句的 WQL 查询来过滤结果。脚本查找指定进程的所有实例。
strProcessName = "chrome.exe" Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colProcesses = objWMIService.ExecQuery("Select * From Win32_Process Where Name = '" & strProcessName & "'") WScript.Echo "Found " & colProcesses.Count & " instances of " & strProcessName For Each objProcess in colProcesses WScript.Echo " PID: " & objProcess.ProcessId & ", Path: " & objProcess.ExecutablePath Next
脚本搜索与指定名称(chrome.exe)匹配的进程。它显示匹配项的数量和每个实例的详细信息。ExecutablePath 显示进程二进制文件的完整路径。这有助于识别同一应用程序的多个实例。
来源
在本文中,我们探讨了 VBScript 中的 Win32_Process
类,涵盖了其用法和实际应用。从列出进程到创建和终止,这些示例展示了强大的进程管理功能。通过这些知识,您可以为系统管理脚本添加强大的进程控制功能。