创建一周运行6天的计划任务

时间:2016-03-01 13:14:24

标签: powershell scheduled-tasks powershell-v2.0 comobject

我正在尝试在TaskScheduler模块之前使用PowerShell创建一些计划任务,这不是一个选项,因为它将用于在外部客户端计算机上运行进程。因此我无法使用cmd,因为我每次都需要指定凭据。

我已经深入研究了这个comobject但我真的不明白这一点。 如果我能找出触发器,我会非常乐意使用它,基本上我需要它每周运行6天(星期日除外),每天一次特定时间。

我认为我已经将行动和论点降下来,但这是我在理解中挣扎的触发器。

这是我正在处理的块here已经解放了,所以所有的信用都在那里!

try {
    [Object] $objScheduledTask = New-Object -ComObject("Schedule.Service")

    if (!($objScheduledTask.Connected)) {
        try {
            $objScheduledTask.Connect($env:COMPUTERNAME)
            $objScheduledTask_Folder = $objScheduledTask.GetFolder('\')
            $objScheduledTask_TaskDefinition = $objScheduledTask.NewTask(0)

            #Registration / Definitions
            $objScheduledTask_RegistrationInfo = $objScheduledTask_TaskDefinition.RegistrationInfo
            $objScheduledTask_RegistrationInfo.Description = 'My task name'

            #Define Settings
            $objScheduledTask_Settings = $objScheduledTask_TaskDefinition.Settings
            $objScheduledTask_Settings.Enabled = $True
            $objScheduledTask_Settings.StartWhenAvailable = $True
            $objScheduledTask_Settings.Hidden = $False

            #Triggers
            $objScheduledTask_Triggers = $objScheduledTask_TaskDefinition.Triggers
            $objScheduledTask_Trigger = $objScheduledTask_Triggers.Create(2)
            $objScheduledTask_Trigger.StartBoundary = "2011-10-01T04:00:00"
            $objScheduledTask_Trigger.DaysInterval = 1
            $objScheduledTask_Trigger.Id = "DailyTriggerId"
            $objScheduledTask_Trigger.Enabled = $True

            #Action
            $objScheduledTask_Action = $objScheduledTask_TaskDefinition.Actions.Create(0)
            $objScheduledTask_Action.Path = 'task\to\execute.exe'
            $objScheduledTask_Action.Arguments = ''
            $objScheduledTask_Action.WorkingDirectory = 'C:\'

            #Create Task
            $objScheduledTask_Folder.RegisterTaskDefinition('Sample Scheduled Task Description', $objScheduledTask_TaskDefinition, 6, "System", $null , 5) | out-null
            Write-Host "Scheduled Task Created Successfully" -ForegroundColor Green
        } catch [System.Exception] {
            Write-Host "Scheduled Task Creation Failed" -ForegroundColor Red
        }
    }
} catch [System.Exception]{
    Write-Host "Scheduled Task Creation Failed" -ForegroundColor Red
    Write-Host "  EXCEPTION:" $_ -ForegroundColor Red
}

1 个答案:

答案 0 :(得分:0)

如果您想在每周的特定日期运行任务,则需要weekly trigger而不是每日触发器。 DaysOfWeek property将天数指定为整数值中的位掩码。

$objScheduledTask_Triggers = $objScheduledTask_TaskDefinition.Triggers
$objScheduledTask_Trigger = $objScheduledTask_Triggers.Create(3)
$objScheduledTask_Trigger.StartBoundary = '2011-10-01T04:00:00'
$objScheduledTask_Trigger.WeeksInterval = 1  # run every week
$objScheduledTask_Trigger.DaysOfWeek = 126   # Mo-Sa
$objScheduledTask_Trigger.Id = 'DailyTriggerId'
$objScheduledTask_Trigger.Enabled = $true