Scheduled Tasks(计划任务)
此参考提供了所有计划任务cmdlet的cmdlet描述和语法。它基于cmdlet开头的动词以字母顺序列出cmdlet。
相关命令提示
cmdlet/command | describe |
---|---|
Disable-ScheduledTask | 禁用计划任务。 |
Enable-ScheduledTask | 启用计划任务。 |
Export-ScheduledTask | 将计划的任务导出为XML字符串。 |
Get-ClusteredScheduledTask | 获取故障转移群集的群集计划任务。 |
Get-ScheduledTask | 获取在本地计算机上注册的计划任务的任务定义对象。 |
Get-ScheduledTaskInfo | 获取计划任务的运行时信息。 |
New-ScheduledTask | 创建一个计划任务实例。 |
New-ScheduledTaskAction | 创建计划的任务动作。 |
New-ScheduledTaskPrincipal | 创建一个包含计划任务主体的对象。 |
New-ScheduledTaskSettingsSet | 创建一个新的计划任务设置对象。 |
New-ScheduledTaskTrigger | 创建一个计划任务触发器对象。 |
Register-ClusteredScheduledTask | 在故障转移群集上注册计划的任务。 |
Register-ScheduledTask | 在本地计算机上注册计划的任务定义。 |
Set-ClusteredScheduledTask | 更改群集计划任务的设置。 |
Set-ScheduledTask | 修改计划的任务。 |
Start-ScheduledTask | 启动计划任务的一个或多个实例。 |
Stop-ScheduledTask | 停止任务的所有正在运行的实例。 |
Unregister-ClusteredScheduledTask | 从故障转移群集中删除计划的任务。 |
Unregister-ScheduledTask | 注销预定的任务。 |
实例: 创建一个定时关机的任务计划
1 修改 PowerShell 默认策略
- PowerShell 默认可以运行 cmdlet,但是cmdlet不能作为脚本来运行,因此需要修改 Powershell 的默认运行策略,从而使 cmdlet 作为脚本来一次性执行完成。
1 2 3 4 |
# 设置Power shell脚本执行策略:Bypass 跳过策勒,并没有任何警告,同时指影响当前Power shell会话 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force |
2 在任务计划中的根文件夹下,创建一个自定义的文件夹.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 定义需要在根文件创建的自定义任务文件夹名称和路径 $TaskPath = "EM\Management\Computer" # 设置Power shell脚本执行策略:Bypass 跳过策勒,并没有任何警告,同时指影响当前Power shell会话 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force $scheduleObject = New-Object -ComObject schedule.service $scheduleObject.connect() $rootFolder = $scheduleObject.GetFolder("\") $rootFolder.CreateFolder("$TaskPath") |
- New-ScheduledTask cmdlet 创建一个包含计划任务的定义的对象。 但是 New-ScheduledTask 并不会自动向 Task Scheduler(任务计划)中注册该对象。
3 创建一个定时关机的任务计划
!⚠ New-ScheduledTask 并不会自动向 Task Scheduler(任务计划)中注册该对象_。要完成 Task Scheduler(任务计划)的新建应包含如下几步:
- New-ScheduledTaskAction
- New-ScheduledTaskTrigger
- New-ScheduledTaskPrincipal
- New-ScheduledTaskSettingsSet
- New-ScheduledTask
- Register-ScheduledTask
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# 设置Power shell脚本执行策略:Bypass 跳过策勒,并没有任何警告,同时只影响当前Power shell会话 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force # 1. 定义任务计划的动作,执行程序为 shutdown,执行参数为 -s -t 300 $TasksAction = New-ScheduledTaskAction -Execute "shutdown" -Argument "-s -t 300" # 2 定义任务计划的触发器 # 2.1 指定为每周的 一,二,三,四,五 的凌晨 0:00 点触发 $TaskTriggerWeek = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday, Tuesday, Wednesday, Thursday,Friday -At 0AM # 2.2 指定为每天的凌晨 3:00 点触发 $TaskTriggerDaily = New-ScheduledTaskTrigger -Daily -At 3AM # 3. 定义任务计划的执行的用户,指定为组 Administrators,任务用户的权限为 最高,不受任何限制 $TaskUsers = New-ScheduledTaskPrincipal -GroupId "BUILTIN\Administrators" -RunLevel Highest # 4. 定义任务计划的设置 $TaskSet = New-ScheduledTaskSettingsSet # 5. 定义新建任务计划,动作为预先定义的 “$TasksAction”、用户为预先定义的 “$TaskUsers”、触发器为预先定义的 “$TaskTrigger” $TasksNew = New-ScheduledTask -Action $TasksAction -Principal $TaskUsers -Trigger $TaskTriggerWeek, $TaskTriggerDaily -Settings $TaskSet # 注册指定任务对象计划 Register-ScheduledTask Shutdown_Week_Daily -InputObject $TasksNew |