如何根据对MessageBox的响应阻止用户使用Powershell注销或锁定工作站?

时间:2018-06-02 17:43:50

标签: windows powershell login logout messagebox

我正在尝试创建一个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')

}

}

提前感谢您提供的任何帮助!

1 个答案:

答案 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

请记住,只需按下电源按钮或拉动电源线即可完全关闭系统。没有软件方法可以阻止它。