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 类,涵盖了它的用法和实际应用。从查询服务状态到管理服务状态和配置,这些示例展示了强大的服务管理功能。有了这些知识,您就可以创建健壮的系统管理脚本。