VBScript Win32_Service 类
最后修改于 2025 年 4 月 9 日
VBScript 中的 Win32_Service
类通过 WMI (Windows Management Instrumentation) 提供对 Windows 服务管理的访问。它允许查询、启动、停止和配置 Windows 服务。此类是 WMI 基础结构的一部分,需要适当的权限才能使用。
Win32_Service
提供对系统服务的全面控制。它可以检索有关已安装服务的详细信息。本教程将通过实际示例介绍 Win32_Service
,以演示其在系统管理脚本中的用法。
Win32_Service 类概述
Win32_Service
类代表本地或远程计算机上的 Windows 服务。它包含 Name、DisplayName、State 和 StartMode 等属性。方法包括 StartService、StopService 和 ChangeStartMode。
主要功能包括服务状态监视和配置更改。大多数操作需要管理员权限。此类可同时访问系统服务和应用程序服务。了解此类有助于自动化服务管理任务。
列出所有服务
此示例演示如何使用 Win32_Service
列出系统上的所有服务。它检索每项服务的基本信息。脚本连接到 WMI 并查询 Win32_Service 类。
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colServices = objWMIService.ExecQuery("Select * from Win32_Service") For Each objService in colServices WScript.Echo "Name: " & objService.Name & vbCrLf & _ "Display Name: " & objService.DisplayName & vbCrLf & _ "State: " & objService.State & vbCrLf & _ "Start Mode: " & objService.StartMode & vbCrLf Next
脚本连接到本地 WMI 服务并查询所有 Win32_Service 实例。然后,它遍历每个服务,显示其 Name、DisplayName、State 和 StartMode。这提供了所有服务的全面视图。
检查服务状态
此示例显示如何检查特定服务的状态。它按名称查询 Win32_Service 类以获取服务。脚本演示在采取操作之前进行服务状态验证。
strServiceName = "Spooler" strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='" & strServiceName & "'") For Each objService in colServices WScript.Echo "Service: " & objService.DisplayName & vbCrLf & _ "State: " & objService.State & vbCrLf & _ "Start Mode: " & objService.StartMode Next
脚本检查打印后台处理程序服务的状态。它使用带有 WHERE 子句的 WQL 查询来过滤特定服务。输出显示服务的当前状态和启动模式。
启动服务
此示例演示如何使用 StartService
方法启动已停止的服务。它首先检查服务状态,然后在服务停止时启动它。脚本包含错误处理以提高健壮性。
strServiceName = "Spooler" strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='" & strServiceName & "'") For Each objService in colServices If objService.State = "Stopped" Then errReturn = objService.StartService() If errReturn = 0 Then WScript.Echo "Service started successfully" Else WScript.Echo "Failed to start service. Error: " & errReturn End If Else WScript.Echo "Service is already running" End If Next
脚本尝试在打印后台处理程序服务停止时启动它。它检查 StartService
的返回代码以验证是否成功。如果操作失败,错误处理会提供反馈。此模式对于服务管理脚本很有用。
停止服务
此示例显示如何使用 StopService
方法停止正在运行的服务。它在尝试停止服务之前验证服务状态。脚本包含状态报告以提供用户反馈。
strServiceName = "Spooler" strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='" & strServiceName & "'") For Each objService in colServices If objService.State = "Running" Then errReturn = objService.StopService() If errReturn = 0 Then WScript.Echo "Service stopped successfully" Else WScript.Echo "Failed to stop service. Error: " & errReturn End If Else WScript.Echo "Service is not running" End If Next
脚本在打印后台处理程序服务运行时将其停止。它检查 StopService
的返回代码以确定是否成功。此方法可确保服务干净关闭并提供反馈。与启动类似,正确检查状态可防止错误。
更改服务启动类型
此示例演示如何使用 ChangeStartMode
方法更改服务的启动类型。它展示了如何将服务配置为自动、手动或禁用启动。脚本包含验证。
strServiceName = "Spooler" strStartMode = "Automatic" ' Can be Automatic, Manual, or Disabled strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='" & strServiceName & "'") For Each objService in colServices errReturn = objService.ChangeStartMode(strStartMode) If errReturn = 0 Then WScript.Echo "Start mode changed successfully to " & strStartMode Else WScript.Echo "Failed to change start mode. Error: " & errReturn End If Next
脚本将打印后台处理程序服务的启动类型更改为“自动”。ChangeStartMode
方法将新的启动类型作为参数。错误处理可确保操作成功的报告。这对于服务配置脚本很有用。
来源
在本文中,我们探讨了 VBScript 中的 Win32_Service
类,涵盖了它的用法和实际应用。从查询服务状态到管理服务状态和配置,这些示例展示了强大的服务管理功能。有了这些知识,您就可以创建健壮的系统管理脚本。