当我在PowerShell ISE中运行以下命令时,它完美地运行,给出了“AccountLock”或“AccountUnlock”的原因,正如它应该的那样。但是,当我在高架PowerShell控制台中运行此命令时,它根本不会在控制台中返回sessionswitch原因。解锁后它什么都不返回。
我检查了Get-EventSubscriber
以及Get-Job
,两者看起来都成功了。 Subscriber&Job的屏幕截图:
Register-ObjectEvent -InputObject $([microsoft.win32.systemevents]) -EventName "SessionSwitch" -Action {write-host $event.SourceEventArgs.Reason}
我想要做的一件事是在会话解锁时(在用户将域密码与域同步后)检测窗口并打开程序。
操作系统:Windows 10版本:5.1 Build 17134 R 590
看看Microsoft文档:SystemEvents.SessionSwitch Event,解释似乎是这条消息被发送到消息泵,这是处理图形消息的代码的一部分。您可能可以尝试在代码中使用隐藏的表单来强制创建消息泵。
注意 :
仅在消息泵运行时才会引发此事件。在Windows服务中,除非使用隐藏表单或手动启动消息泵,否则不会引发此事件。有关演示如何使用Windows服务中的隐藏表单处理系统事件的代码示例,请参阅SystemEvents类。