如何使用 VBScript 列出所有 WMI 事件类?

发布于 2024-09-28 16:52:49 字数 51 浏览 0 评论 0原文

使用 VBScript,如何列出表示事件的所有 WMI 类?

提前致谢。

Using VBScript, how can I list all WMI classes that represent events?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

玩套路吗 2024-10-05 16:52:49

您可以使用 WMI 架构查询__EVENT 继承的类。一个例子是:

Function GetWmiEventClasses(computerName)
    Dim wmiRoot
    Dim eventClasses

    Set wmiRoot = GetObject("winmgmts:\\" & computerName & "\root\cimv2")
    Set eventClasses = wmiRoot.ExecQuery("select * from meta_class where __this isa '__event'") 

    Set GetWmiEventClasses = eventClasses
End Function

用法:

Set eventClasses = GetWmiEventClasses("." )

If Not eventClasses Is Nothing Then
    Dim eventClass 

    For Each eventClass In eventClasses
        WScript.Echo eventClass.Path_.Class
    Next 
End If 

You can use WMI schema query for classes that inherit from __EVENT. An example would be:

Function GetWmiEventClasses(computerName)
    Dim wmiRoot
    Dim eventClasses

    Set wmiRoot = GetObject("winmgmts:\\" & computerName & "\root\cimv2")
    Set eventClasses = wmiRoot.ExecQuery("select * from meta_class where __this isa '__event'") 

    Set GetWmiEventClasses = eventClasses
End Function

USAGE:

Set eventClasses = GetWmiEventClasses("." )

If Not eventClasses Is Nothing Then
    Dim eventClass 

    For Each eventClass In eventClasses
        WScript.Echo eventClass.Path_.Class
    Next 
End If 
月光色 2024-10-05 16:52:49

如果远程系统是访问证明的,这将导致凭据错误。使用

strComputer = computerName

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, "root\CIMV2", strUser, strPassword, "MS_409", "NTLMDomain:" + strDomain)

Set eventClasses = objWMIService.ExecQuery("select * from meta_class where __this isa '__event'")

Set GetWmiEventClasses = eventClasses

以字符串形式提供凭据并添加到您的代码中。

然后查询事件类...

Dim eventClasses As Object
将事件类变暗为对象
将服务器名称调暗为字符串
Dim className As String

ServerName = ""

Set eventClasses = GetWmiEventClasses(ServerName)

If Not eventClasses Is Nothing Then

' Dim eventClass

    For Each EventClass In eventClasses
        className = CStr(EventClass.Path_.Class)
        Call WriteToRTB_eventClass(className)
        WriteTextFile (className)
        
    Next
End If

This will cause a credential error if remote systems are access proof. Use

strComputer = computerName

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, "root\CIMV2", strUser, strPassword, "MS_409", "NTLMDomain:" + strDomain)

Set eventClasses = objWMIService.ExecQuery("select * from meta_class where __this isa '__event'")

Set GetWmiEventClasses = eventClasses

Supply credentials as string and add to you code.

Then query the event class...

Dim eventClasses As Object
Dim EventClass As Object
Dim ServerName As String
Dim className As String

ServerName = ""

Set eventClasses = GetWmiEventClasses(ServerName)

If Not eventClasses Is Nothing Then

' Dim eventClass

    For Each EventClass In eventClasses
        className = CStr(EventClass.Path_.Class)
        Call WriteToRTB_eventClass(className)
        WriteTextFile (className)
        
    Next
End If
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文