如何使用powershell日常关机?

How to using powershell to shutdown computer everyday?

我想每天在 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 – 计划任务执行的动作。一个动作通常是 运行 一个程序或脚本。一项计划任务可以有多个操作。
  • 触发器 – 控制计划任务何时 运行s。触发器可以是基于时间的,例如设置每天或每小时重复的时间表。触发器也可以是基于 activity 的,运行 是一项基于检测到的活动(例如计算机启动、用户登录或记录的事件)的任务。

查看 return 在 运行ning Lee 的建议之后编辑的各种 cmdlet:Get-Command *scheduled*,将 return 3 个我们需要使用的特定 cmdlet 你的情况.

  1. New-ScheduledTaskAction
  2. New-ScheduledTaskTrigger
  3. Register-ScheduledTask

新建计划任务操作

使用New-ScheduledTaskAction,我们将创建一个计划任务操作对象并将其存储在一个变量中; $任务动作。该操作将调用 Powershell.exe 并将参数传递给 运行 Stop-Computer cmdlet 以关闭您的计算机。

# Create a new task action
$taskAction = New-ScheduledTaskAction `
    -Execute 'powershell.exe' `
    -Argument 'Stop-Computer -Force'
$taskAction

新计划任务触发器

接下来是 New-ScheduledTaskTrigger cmdlet,我们将使用它来创建 触发器 以每天 23:00 执行计划任务。

#Create task trigger
$taskTrigger = New-ScheduledTaskTrigger -Daily -At 9PM
$tasktrigger

注册-ScheduledTask

最后,我们可以使用 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 谁写了文章 Powershell Scheduled Task,其中我从一个 long 中提取了代码并对此 post 进行了解释(只是总结)。

对于这些 cmdlet 中的任何一个的帮助,Get-Help cmdlet-name -Online 可以 运行 获得此处提到的任何一个的最新帮助,以及完整的语法和其他可选参数可能被使用;比如在使用 -Principal.

时添加应该是 运行 的上下文