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_EVENT | 0 |
TASK_TRIGGER_TIME | 1 |
TASK_TRIGGER_DAILY | 2 |
TASK_TRIGGER_WEEKLY | 3 |
TASK_TRIGGER_MONTHLY | 4 |
TASK_TRIGGER_MONTHLYDOW | 5 |
TASK_TRIGGER_IDLE | 6 |
TASK_TRIGGER_REGISTRATION | 7 |
TASK_TRIGGER_BOOT | 8 |
TASK_TRIGGER_LOGON | 9 |
TASK_TRIGGER_SESSION_STATE_CHANGE | 11 |
$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导入任务更容易。第一个命令创建一个新任务。第二个将立即运行它(而不是等待触发器激活它)。