我正在尝试为我们的办公室人员设置一个预定任务,该任务将在预设时间关闭计算机。
我已经有一个脚本,硬关闭在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" )
}
1条答案
按热度按时间brccelvz1#
通过使用
Register-ScheduledTask
的-User
和-Password
参数,您将通过服务启动计划任务 *,这意味着它无法与用户的桌面交互,因此无法向用户呈现UI。要允许这种交互,您必须使用
New-ScheduledTaskPrincipal
和-LogonType Interactive
创建一个主体对象,这意味着该任务将(a)仅在该用户登录时运行,并且(b)然后将 * 可见地 * 运行,允许您呈现UI: