问题描述
我想在每天 23:00 关闭 PC,我使用 at
命令但不推荐使用。
at 23:00 /every:M,T,W,Th,F,S,Su shutdown -s -f -t 300
由于不再支持 at
,Powershell 告诉我改用 schtasks.exe
。
有人能告诉我该怎么做吗?
解决方法
跟进@Lee_Dailey 和@Jeroen Mostert 的评论。如果需要,您可以将每日计划任务设置为在特定时间运行。幸运的是,powershell 具有 New-SchduledTask
cmdlet,您可以使用它轻松完成此操作。
创建新的计划任务
计划任务至少需要两个组件才能工作;动作和触发器。
- Action – 由计划任务执行的操作。动作通常是运行程序或脚本。一项计划任务可以有多个操作。
- 触发器 - 控制计划任务的运行时间。触发器可以是基于时间的,例如设置每日或每小时重复的时间表。触发器也可以是基于活动的,它根据检测到的活动(例如计算机启动、用户登录或记录的事件)运行任务。
查看运行 Lee 的建议后返回的各种 cmdlet:Get-Command *scheduled*
,将返回 3 个特定的 cmdlet,在您的情况下。
New-ScheduledTaskAction
New-ScheduledTaskTrigger
Register-ScheduledTask
New-ScheduledTaskAction
使用New-ScheduledTaskAction
,我们将创建一个计划任务动作对象并将其存储在一个变量中; $taskAction。该操作将调用 Powershell.exe 并传递参数以运行 Stop-Computer cmdlet 关闭您的计算机。
# Create a new task action
$taskAction = New-ScheduledTaskAction `
-Execute 'powershell.exe' `
-Argument 'Stop-Computer -Force'
$taskAction
New-ScheduledTaskTrigger
接下来是 New-ScheduledTaskTrigger
cmdlet,我们将使用它来创建一个触发器,以在每天 23:00 执行计划任务。
#Create task trigger
$taskTrigger = New-ScheduledTaskTrigger -Daily -At 9PM
$tasktrigger
注册计划任务
最后,我们可以使用 Register-ScheduledTask
来安排任务,让一切都平静下来。
# Register the new PowerShell scheduled task
# The name of your scheduled task.
$taskName = "Shutdown Computer"
# Describe the scheduled task.
$description = "Shuts computer down daily at 2300"
# Register the scheduled task
Register-ScheduledTask `
-TaskName $taskName `
-Action $taskAction `
-Trigger $taskTrigger `
-Description $description
所有人都像这样:
# The name of your scheduled task.
$taskName = "Shutdown Computer"
# Describe the scheduled task.
$description = "Shuts computer down daily at 2300 MTN"
# Create a new task action
$taskAction = New-ScheduledTaskAction `
-Execute 'powershell.exe' `
-Argument 'Stop-Computer -Force'
#Create task trigger
$taskTrigger = New-ScheduledTaskTrigger -Daily -At 9PM
# Register the new PowerShell scheduled task
# Register the scheduled task
Register-ScheduledTask `
-TaskName $taskName `
-Action $taskAction `
-Trigger $taskTrigger `
-Description $description
这是为未来的读者准备的,他们可能会就如何做到这一点提出同样的问题。所有学分归作者June Castillote所有,他写了这篇文章{{3 }} 其中我从很长的代码中提取了这篇文章的解释(只是总结)。
对于这些 cmdlet 中的任何一个的帮助,可以运行 Get-Help cmdlet-name -Online
以获得此处提到的任何一个的最新帮助,以及可能使用的完整语法和其他可选参数;就像使用 -Principal
添加它应该在什么上下文中运行一样。