Dela via


Exempel på tidsutlösare (skript)

Det här skriptexemplet visar hur du skapar en uppgift som kör Anteckningar vid en viss tidpunkt. Uppgiften innehåller en tidsbaserad utlösare som anger en startgräns för att aktivera aktiviteten, en körbar åtgärd som kör Anteckningar och en slutgräns som inaktiverar aktiviteten.

Följande procedur beskriver hur du schemalägger en aktivitet för att starta en körbar fil vid en viss tidpunkt.

Att schemalägga Anteckningar för att starta vid en viss tidpunkt

  1. Skapa ett TaskService- objekt. Med det här objektet kan du skapa uppgiften i en angiven mapp.
  2. Hämta en uppgiftsmapp och skapa en uppgift. Använd metoden TaskService.GetFolder för att hämta mappen där uppgiften lagras och metoden TaskService.NewTask för att skapa TaskDefinition objekt som representerar aktiviteten.
  3. Definiera information om aktiviteten med hjälp av objektet TaskDefinition. Använd egenskapen TaskDefinition.Settings för att definiera de inställningar som avgör hur tjänsten Schemaläggaren utför uppgiften och egenskapen TaskDefinition.RegistrationInfo för att definiera den information som beskriver uppgiften.
  4. Skapa en tidsbaserad utlösare med egenskapen TaskDefinition.Triggers. Den här egenskapen ger åtkomst till objektet TriggerCollection. Använd metoden TriggerCollection.Create (ange vilken typ av utlösare du vill skapa) för att skapa en tidsbaserad utlösare. När du skapar utlösaren anger du startgränsen och slutgränsen för utlösaren för att aktivera och inaktivera utlösaren. Startgränsen anger när aktivitetens åtgärd ska utföras.
  5. Skapa en åtgärd för uppgiften som ska köras med hjälp av egenskapen TaskDefinition.Actions. Den här egenskapen ger åtkomst till objektet ActionCollection. Använd metoden ActionCollection.Create för att ange vilken typ av åtgärd du vill skapa. I det här exemplet används ett ExecAction- objekt som representerar en åtgärd som kör en kommandoradsåtgärd.
  6. Registrera uppgiften med hjälp av metoden TaskFolder.RegisterTaskDefinition. I det här exemplet startar aktiviteten Anteckningar vid den aktuella tiden plus 30 sekunder.

I följande VBScript-exempel visas hur du schemalägger en aktivitet för att köra Anteckningar 30 sekunder efter att aktiviteten har registrerats.

'------------------------------------------------------------------
' This sample schedules a task to start notepad.exe 30 seconds
' from the time the task is registered.
'------------------------------------------------------------------

' A constant that specifies a time-based trigger.
const TriggerTypeTime = 1
' A constant that specifies an executable action.
const ActionTypeExec = 0   


'********************************************************
' Create the TaskService object.
Set service = CreateObject("Schedule.Service")
call service.Connect()

'********************************************************
' Get a folder to create a task definition in. 
Dim rootFolder
Set rootFolder = service.GetFolder("\")

' The taskDefinition variable is the TaskDefinition object.
Dim taskDefinition
' The flags parameter is 0 because it is not supported.
Set taskDefinition = service.NewTask(0) 

'********************************************************
' Define information about the task.

' Set the registration info for the task by 
' creating the RegistrationInfo object.
Dim regInfo
Set regInfo = taskDefinition.RegistrationInfo
regInfo.Description = "Start notepad at a certain time"
regInfo.Author = "Author Name"

'********************************************************
' Set the principal for the task
Dim principal
Set principal = taskDefinition.Principal

' Set the logon type to interactive logon
principal.LogonType = 3


' Set the task setting info for the Task Scheduler by
' creating a TaskSettings object.
Dim settings
Set settings = taskDefinition.Settings
settings.Enabled = True
settings.StartWhenAvailable = True
settings.Hidden = False

'********************************************************
' Create a time-based trigger.
Dim triggers
Set triggers = taskDefinition.Triggers

Dim trigger
Set trigger = triggers.Create(TriggerTypeTime)

' Trigger variables that define when the trigger is active.
Dim startTime, endTime

Dim time
time = DateAdd("s", 30, Now)  'start time = 30 seconds from now
startTime = XmlTime(time)

time = DateAdd("n", 5, Now) 'end time = 5 minutes from now
endTime = XmlTime(time)

WScript.Echo "startTime :" & startTime
WScript.Echo "endTime :" & endTime

trigger.StartBoundary = startTime
trigger.EndBoundary = endTime
trigger.ExecutionTimeLimit = "PT5M"    'Five minutes
trigger.Id = "TimeTriggerId"
trigger.Enabled = True

'***********************************************************
' Create the action for the task to execute.

' Add an action to the task to run notepad.exe.
Dim Action
Set Action = taskDefinition.Actions.Create( ActionTypeExec )
Action.Path = "C:\Windows\System32\notepad.exe"

WScript.Echo "Task definition created. About to submit the task..."

'***********************************************************
' Register (create) the task.

call rootFolder.RegisterTaskDefinition( _
    "Test TimeTrigger", taskDefinition, 6, , , 3)

WScript.Echo "Task submitted."



'------------------------------------------------------------------
' Used to get the time for the trigger 
' startBoundary and endBoundary.
' Return the time in the correct format: 
' YYYY-MM-DDTHH:MM:SS. 
'------------------------------------------------------------------
Function XmlTime(t)
    Dim cSecond, cMinute, CHour, cDay, cMonth, cYear
    Dim tTime, tDate

    cSecond = "0" & Second(t)
    cMinute = "0" & Minute(t)
    cHour = "0" & Hour(t)
    cDay = "0" & Day(t)
    cMonth = "0" & Month(t)
    cYear = Year(t)

    tTime = Right(cHour, 2) & ":" & Right(cMinute, 2) & _
        ":" & Right(cSecond, 2)
    tDate = cYear & "-" & Right(cMonth, 2) & "-" & Right(cDay, 2)
    XmlTime = tDate & "T" & tTime 
End Function

Använda schemaläggarens