我正在尝试创建一个Powershell脚本,只要用户登录,注销,关闭或锁定其工作站,就会弹出一个消息框。根据响应,我希望允许用户操作继续,或者中断用户操作。这是我到目前为止的一个例子:
$msgBoxInput = [System.Windows.MessageBox]::Show('Have you clocked in/out?','Reminder','YesNo','Error')
switch ($msgBoxInput) {
'Yes' {
## Continue with user action (ie. lock computer, logout, shutdown)
}
'No' {
## Stop user action (ie. lock computer, logout, shutdown, but not login action)
## Open clock in/out web page
[Diagnostics.Process]::Start('chrome.exe', 'https://url.to.web page')
}
}
提前感谢您提供的任何帮助!
答案 0 :(得分:0)
您必须为每种事件类型捕获,中断它并使用计划任务来触发脚本操作或使用WMI事件观察器进行类似操作。
看到关于类似主题的讨论,它当然是在谈论关闭,但是你所追求的两种方法需要相同类型的方法。
阻止关机的PowerShell窗口
...看起来您可以使用设置事件监视器 Register-ObjectEvent使用[microsoft.win32.systemevents]并观察 对于SessionEnding或SessionEnded。我还没有时间去测试 这个,但你可以看看使用这样的东西:$ sysevent = [microsoft.win32.systemevents] Register-ObjectEvent -InputObject $ sysevent -EventName“SessionEnding”-Action {“Shutdown / Logoff 检测到。“; Get-Process -Name Powershell | Stop-Process -Force}
https://serverfault.com/questions/379830/powershell-window-preventing-shutdown
请记住,只需按下电源按钮或拉动电源线即可完全关闭系统。没有软件方法可以阻止它。