2016-03-01 74 views
1

我試圖在TaskScheduler模塊之前使用PowerShell創建一些計劃任務,這不是一個選項,因爲這將用於在外部客戶端計算機上運行進程。因此我不能使用cmd,因爲我需要每次都指定憑據。創建每週運行6天的計劃任務

我已經鑽研了一下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 
} 

回答

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 
+0

對不起,我以爲我點了它! :d –