Windows如何使用PowerShell创建计划任务

时间:2020-01-09 10:46:32  来源:igfitidea点击:

Windows如何使用脚本创建计划任务?大多数管理员使用的图形界面任务计划.msc控制台来创建Windows任务计划程序作业。但是,在各种脚本和自动化作业中,使用PowerShell功能创建计划任务要方便得多。在本文中,我们将展示如何创建新的Windows调度程序任务,将任务导出到XML文件中,并使用PowerShell(v2.0和4.0)将它们导入其他计算机。

假设,我们需要创建一个在启动期间(或者在某个时间)运行的计划任务,并执行一些PowerShell脚本或者命令。

如何在PowerShell 2.0中创建计划任务

在PowerShell2.0(Windows 7、Windows Server 2008 R2)中,要在Powershell中创建重复任务(ScheduleJob),可以使用 Schedule.ServiceCOM接口。在本例中,我们创建一个计划任务,该任务将在启动期间执行包含PowerShell脚本的特定文件。任务是以系统权限执行的。

$TaskName = "NewPsTask"
$TaskDescription = "Running PowerShell script from Task Scheduler"
$TaskCommand = "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\PS\StartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()
$rootFolder = $service.GetFolder("\")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#http://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)

说明在这种情况下,会创建一个触发器,该触发器在引导期间激活(代码8)。请参阅下面的完整代码列表:

TASK_TRIGGER_EVENT0
TASK_TRIGGER_TIME1
TASK_TRIGGER_DAILY2
TASK_TRIGGER_WEEKLY3
TASK_TRIGGER_MONTHLY4
TASK_TRIGGER_MONTHLYDOW5
TASK_TRIGGER_IDLE6
TASK_TRIGGER_REGISTRATION7
TASK_TRIGGER_BOOT8
TASK_TRIGGER_LOGON9
TASK_TRIGGER_SESSION_STATE_CHANGE11
$trigger.StartBoundary = $TaskStartTime.ToString("yyyy-MM-dd'T'HH:mm:ss")
$trigger.Enabled = $true
# http://msdn.microsoft.com/en-us/library/windows/desktop/aa381841(v=vs.85).aspx
$Action = $TaskDefinition.Actions.Create(0)
$action.Path = "$TaskCommand"
$action.Arguments = "$TaskArg"
#http://msdn.microsoft.com/en-us/library/windows/desktop/aa381365(v=vs.85).aspx
$rootFolder.RegisterTaskDefinition("$TaskName",$TaskDefinition,6,"System",$null,5)

执行命令后,新任务NewPsTask将出现在“任务调度器”中。

在PowerShell2.0(Windows 7/Server 2008 R2)中,使用schtasks导入任务更容易。第一个命令创建一个新任务。第二个将立即运行它(而不是等待触发器激活它)。