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

问题描述 投票:0回答:1

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

}

}

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

windows powershell login logout messagebox
1个回答
0
投票

您必须为每种事件类型捕获,中断它并具有计划任务以触发脚本操作或使用WMI事件观察器进行类似的操作。

看到关于类似主题的讨论,当然是谈论关闭,但是你所追求的两种方法需要相同类型的方法。

PowerShell窗口阻止关机

...看起来您可以使用[microsoft.win32.systemevents]使用Register-ObjectEvent设置事件观察器,并观察SessionEnding或SessionEnded。我没有时间对此进行测试,但你可以看看使用类似这样的东西:$ sysevent = [microsoft.win32.systemevents] Register-ObjectEvent -InputObject $ sysevent -EventName“SessionEnding”-Action {“Shutdown / Logoff检测到。“; Get-Process -Name Powershell |停止处理 - 强制}

https://serverfault.com/questions/379830/powershell-window-preventing-shutdown

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

© www.soinside.com 2019 - 2024. All rights reserved.