如何使用powershell每天关闭计算机?

问题描述

我想在每天 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,在您的情况下

  1. New-ScheduledTaskAction
  2. New-ScheduledTaskTrigger
  3. 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 添加它应该在什么上下文中运行一样。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...