Powershell 如何记录;新pnp装置“;Windows上要控制台的事件?
我想写一些类似于Powershell 如何记录;新pnp装置“;Windows上要控制台的事件?,powershell,windows-10,Powershell,Windows 10,我想写一些类似于nestat(记录到控制台的新tcp连接)的东西,但要针对带有powershell的pnp设备 我应该定期循环获取PnpDevice并“手动”检查差异,还是有一种API方法“订阅特定于PnP的某种事件总线” 您可以使用WMI事件来执行此操作。例如,这里有一种方法(似乎过于复杂,所以可能有人可以改进): 现在,当您添加/删除设备时,您将在控制台中获得如下输出: PNPEvent: Unplugged Caption: Apple iPhone PNPDeviceID: USB\VI
nestat
(记录到控制台的新tcp连接)的东西,但要针对带有powershell的pnp设备
我应该定期循环
获取PnpDevice
并“手动”检查差异,还是有一种API方法“订阅特定于PnP的某种事件总线” 您可以使用WMI事件来执行此操作。例如,这里有一种方法(似乎过于复杂,所以可能有人可以改进):
现在,当您添加/删除设备时,您将在控制台中获得如下输出:
PNPEvent: Unplugged
Caption: Apple iPhone
PNPDeviceID: USB\VID_05AC&PID_12A8&MI_00\E&2491F388&0&0000
PNPEvent: Plugged In
Caption: Apple iPhone
PNPDeviceID: USB\VID_05AC&PID_12A8&MI_00\E&2491F388&0&0000
要记住以下几点:
- 事件注册仅在当前会话中持续
- 您需要从提升的提示符运行此命令
$addIdentifier, $removeIdentifier | ForEach-Object { Unregister-Event -Force -SourceIdentifier $_ }
非常感谢。Register WmiEvent调用返回错误:无法绑定参数,因为参数“Query”被多次指定。PSVersion是5.1,我认为这是一个格式问题,看起来注册在一行上,但应该是两个单独的调用。我更新了这个示例,使其符合要求。
$addIdentifier, $removeIdentifier | ForEach-Object { Unregister-Event -Force -SourceIdentifier $_ }