PowerShell:如何获取有关 WMI 事件的详细信息?

发布于 2024-08-06 18:40:06 字数 1489 浏览 6 评论 0原文

我正在 Windows 7 上学习 PowerShell 2.0。

我的任务很简单:我想侦听 WMI 事件,然后显示有关它的一些信息。

这就是我目前正在做的事情:

Register-WmiEvent -class win32_ProcessStartTrace -sourceIdentifier processStart
Wait-Event

它似乎有效。事实上,当我启动一个流程时,我得到了这个:

ComputerName     :
RunspaceId       : bb0f38b9-2f2e-4f7c-98ec-ec3811e8e601
EventIdentifier  : 11
Sender           : System.Management.ManagementEventWatcher
SourceEventArgs  : System.Management.EventArrivedEventArgs
SourceArgs       : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs}
SourceIdentifier : processStart
TimeGenerated    : 26/09/2009 15:19:25
MessageData      :

问题是,我不知道如何获取有关该事件的详细信息。例如,如何获取刚刚启动的进程的名称?理想情况下,我会有这样的事情:

__GENUS             : 2
__CLASS             : Win32_ProcessStartTrace
__SUPERCLASS        : Win32_ProcessTrace
__DYNASTY           : __SystemClass
__RELPATH           :
__PROPERTY_COUNT    : 7
__DERIVATION        : {Win32_ProcessTrace, Win32_SystemTrace, __ExtrinsicEvent, __Event...}
__SERVER            :
__NAMESPACE         :
__PATH              :
ParentProcessID     : 1480
ProcessID           : 6860
ProcessName         : notepad++.exe
SECURITY_DESCRIPTOR :
SessionID           : 1
Sid                 : {1, 5, 0, 0...}
TIME_CREATED        : 128984449371986347

当我这样做时我可以获得上述信息

(get-event).sender.waitfornextevent()

但是,显然,这并不是我真正想要的 - 我不想等待另一个事件,我想要有关当前事件的信息。

I'm learning PowerShell 2.0 on Windows 7.

My task is simple: I want to listen for a WMI event and then display some information about it.

Here is what I'm currently doing:

Register-WmiEvent -class win32_ProcessStartTrace -sourceIdentifier processStart
Wait-Event

It seems to work. Indeed, I get this when I start a process:

ComputerName     :
RunspaceId       : bb0f38b9-2f2e-4f7c-98ec-ec3811e8e601
EventIdentifier  : 11
Sender           : System.Management.ManagementEventWatcher
SourceEventArgs  : System.Management.EventArrivedEventArgs
SourceArgs       : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs}
SourceIdentifier : processStart
TimeGenerated    : 26/09/2009 15:19:25
MessageData      :

Problem is, I don't know how to get detailed information about the event. For example, how do I get the name of the process that just started? Ideally, I would have something like this:

__GENUS             : 2
__CLASS             : Win32_ProcessStartTrace
__SUPERCLASS        : Win32_ProcessTrace
__DYNASTY           : __SystemClass
__RELPATH           :
__PROPERTY_COUNT    : 7
__DERIVATION        : {Win32_ProcessTrace, Win32_SystemTrace, __ExtrinsicEvent, __Event...}
__SERVER            :
__NAMESPACE         :
__PATH              :
ParentProcessID     : 1480
ProcessID           : 6860
ProcessName         : notepad++.exe
SECURITY_DESCRIPTOR :
SessionID           : 1
Sid                 : {1, 5, 0, 0...}
TIME_CREATED        : 128984449371986347

I can get the above information when I do

(get-event).sender.waitfornextevent()

But, obviously, that's not really what I had in mind - I don't want to wait for another event, I want info on the current one.

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文