windows 自动关闭脚本,带有取消从任务调度程序调用的用户的选项

9ceoxa92  于 2023-06-07  发布在  Windows
关注(0)|答案(1)|浏览(339)

我正在尝试为我们的办公室人员设置一个预定任务,该任务将在预设时间关闭计算机。
我已经有一个脚本,硬关闭在11:00没有选择的用户。
然而,为了帮助我们的节能系统,我想在晚上早些时候关闭,但给予任何迟到的工人选择推迟关闭。
当我从PowerShell终端运行它时,它可以工作,但是当它在计划任务中时,它停止工作。
从计划任务运行PowerShell脚本是否有任何限制?
有没有一种原生的方式来请求用户允许关闭?使用Bat文件会更容易吗?
我已经用参数代码设置了计划任务,如下所示。用户名是Active Directory管理员。

$taskAction = New-ScheduledTaskAction `
    -Execute 'powershell.exe' `
    -Argument '\Users\deployment\docs\RequestPowerOff-GUI.ps1'

$taskTrigger = New-ScheduledTaskTrigger -Daily -At 09:00PM #not for roll out

Register-ScheduledTask `
    -TaskName $taskName `
    -Action $taskAction `
    -Trigger $taskTrigger `
    -Description $description `
    -User $UserName -Password $Password

从ps1文件运行的代码如下:

Add-Type -AssemblyName PresentationFramework

shutdown -s -t 600 -f

$answer = [System.Windows.MessageBox]::Show( "Computer will Auto Shutdown in 10 min. Would you like to continue working?", "Auto Shutdown ", "YesNo", "Warning" )

if ($answer -eq "Yes")
{
    shutdown -a
    [void] [System.Windows.MessageBox]::Show( "poweroff canceled", "Auto poweroff", "OK", "Information" )
    
}
brccelvz

brccelvz1#

通过使用Register-ScheduledTask-User-Password参数,您将通过服务启动计划任务 *,这意味着它无法与用户的桌面交互,因此无法向用户呈现UI。
要允许这种交互,您必须使用New-ScheduledTaskPrincipal-LogonType Interactive创建一个主体对象,这意味着该任务将(a)仅在该用户登录时运行,并且(b)然后将 * 可见地 * 运行,允许您呈现UI:

  • 注意:除非你是为 * 自己 * 安排任务,否则以下代码必须 * 以提升 *(作为管理员)运行。
$taskAction = New-ScheduledTaskAction `
    -Execute 'powershell.exe' `
    -Argument '\Users\deployment\docs\RequestPowerOff-GUI.ps1'

$taskTrigger = New-ScheduledTaskTrigger -Daily -At 09:00PM #not for roll out

# Create a principal with -LogonType Interactive (which is actually the default)
$principal = New-ScheduledTaskPrincipal -UserId $UserName -LogonType Interactive

# Instead of using -UserName and -Password, pass the $principal object
# to -Principal
Register-ScheduledTask `
    -TaskName $taskName `
    -Action $taskAction `
    -Trigger $taskTrigger `
    -Description $description `
    -Principal $principal

相关问题