PowerShell 计划工作(ScheduledJob) 6


计划工作简单介绍

ScheduledJob相关的命令位于PowerShell的PSScheduledJob组件 。该组件是在Windows PowerShell 3.0 版本中引进的,当然也只能在PowerShell 3.0和最新的版本环境中使用。
Windows PowerShell 计划工作非常实用,因为它整合了PowerShell 后台工作和Windows 中的计划任务。 像Windows PowerShell后台工作一样,计划工作也是在后台异步运行。因为一个已经运行的计划工作的实例,也可以使用Start-Job, Get-Job, Stop-Job, and Receive-Job 这些命令来管理。
像“计划任务”中的任务,计划工作被保存到硬盘中。你可以在“计划任务”中查看和管理这些工作:需要时禁用或启用它们,以模板的形式来运行和使用它们。

计划工作命令

查看所有PSScheduledJob组件中的命令

通过下面的命令查看所有PSScheduledJob的命令:

Get-Command -Module PSScheduledJob
PS C:\> Get-Command -Module PSScheduledJob

CommandType Name                    ModuleName
----------- ----                    ----------
Cmdlet      Add-JobTrigger          PSScheduledJob
Cmdlet      Disable-JobTrigger      PSScheduledJob
Cmdlet      Disable-ScheduledJob    PSScheduledJob
Cmdlet      Enable-JobTrigger       PSScheduledJob
Cmdlet      Enable-ScheduledJob     PSScheduledJob
Cmdlet      Get-JobTrigger          PSScheduledJob
Cmdlet      Get-ScheduledJob        PSScheduledJob
Cmdlet      Get-ScheduledJobOption  PSScheduledJob
Cmdlet      New-JobTrigger          PSScheduledJob
Cmdlet      New-ScheduledJobOption  PSScheduledJob
Cmdlet      Register-ScheduledJob   PSScheduledJob
Cmdlet      Remove-JobTrigger       PSScheduledJob
Cmdlet      Set-JobTrigger          PSScheduledJob
Cmdlet      Set-ScheduledJob        PSScheduledJob
Cmdlet      Set-ScheduledJobOption  PSScheduledJob
Cmdlet      Unregister-ScheduledJob PSScheduledJob

对PSScheduledJob组件中的命令分组

通过下面的命令对这些命令按照名词进行分组:

Get-Command -Module PSScheduledJob | Group-Object Noun
PS C:\> Get-Command -Module PSScheduledJob | Group-Object Noun 

Count Name               Group
----- ----               -----
    7 JobTrigger         {Add-JobTrigger, Disable-JobTrigger, Enable-JobTrigger, Get-JobTrigger...}
    6 ScheduledJob       {Disable-ScheduledJob, Enable-ScheduledJob, Get-ScheduledJob, Register-ScheduledJob...}
    3 ScheduledJobOption {Get-ScheduledJobOption, New-ScheduledJobOption, Set-ScheduledJobOption}

分组以后发现主要有三类:JobTrigger,ScheduledJob,ScheduledJobOption

  1. JobTrigger:定义工作怎样展开(如开始时间,开始频率,用户凭据等)
  2. ScheduledJob:定义工作内容(一般是脚本块)
  3. ScheduledJobOption:定义工作的一些高级选项(如是否在电池模式下运行,是否在“计划任务中”显示等)

计划工作演示

接下来,我们来看一个简历的例子。
需求:每2分钟来自动清理一下IE的历史记录

添加计划工作

Register-ScheduledJob -Name clean-ie-history -ScriptBlock  {
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1 }

添加计划工作时,需要管理员权限,否则可能会遇到下面的错误:
Register-ScheduledJob : A directory not found error occurred while registering scheduled job definition
clean-ie-history.  Make sure you are running Windows PowerShell with elevated privileges.

添加完毕后重启PowerShell控制台,看它是否还存在,是的,它还在呢!

$job=Get-ScheduledJob -Name clean-ie-history
$job

创建工作触发器

$jobt=New-JobTrigger -Once -At (Get-Date).AddMinutes(1) -RepetitionInterval '00:02:00' -RepetitionDuration '00:05:00'

给计划工作添加触发器

$job=Get-ScheduledJob -Name clean-ie-history $job | Add-JobTrigger -Trigger $jobt

验证计划工作

接下来通过打开“计划任务”管理器(taskschd.msc),验证我们创建的job。 位于Microsoft\Windows\PowerShell\ScheduledJob目录:

PowerShell 计划工作添加后,会显示在“计划任务中”
PowerShell 计划工作添加后,会显示在“计划任务中”

禁用和启用计划工作

$job | Disable-ScheduledJob $job | Enable-ScheduledJob

删除计划工作

$job | Unregister-ScheduledJob
本文链接: https://www.pstips.net/about-scheduledjob.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

回复 llllllll 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

6 条评论 “PowerShell 计划工作(ScheduledJob)