How to Create a Schedule Token
You create a schedule token, in Configuration Manager, by creating and populating an instance of the appropriate SMS_ST_
schedule token class. SMS_ST
schedule classes are child classes of the SMS_ScheduleToken
class and handle the scheduling of events with differing frequencies such as daily, weekly and monthly.
The SMS_ScheduleMethods Windows Management Instrumentation (WMI) class, and the corresponding ReadFromString and WriteToString methods are used to decode and encode schedule tokens into and from an interval string. The interval strings can then be used to set schedule properties when defining or modifying objects. An example of this can be seen in the How to Create a Maintenance Window for a Collection topic where the ServiceWindowSchedules
property is configured.
To create a schedule token and convert it to an interval string
Create a schedule token object by using one of the SMS_ScheduleToken child classes. This example uses the SMS_ST_RecurInterval class.
Populate the properties of the new schedule token object.
Convert the schedule token object to an interval string by using the
SMS_ScheduleMethods
class andWriteToString
method.Use the interval string to populate an object's schedule properties, as needed.
Example
The following example method shows how to create a schedule token by creating and populating an instance of the SMS_ST_RecurInterval
schedule token class. In addition, the example shows how to convert the schedule to an interval string by using the SMS_ScheduleMethods
class and WriteToString
method.
For information about calling the sample code, see Calling Configuration Manager Code Snippets.
Sub CreateDailyRecurringScheduleString(connection, _
hourDuration, _
daySpan, _
startTime, _
isGmt)
' Create a new recurring interval schedule object.
' Note: There are several types of schedule classes available, each defines a different type of schedule.
Set recurInterval = connection.Get("SMS_ST_RecurInterval").SpawnInstance_
' Populate the schedule properties.
recurInterval.DayDuration = 0
recurInterval.HourDuration = hourDuration
recurInterval.MinuteDuration = 0
recurInterval.DaySpan = daySpan
recurInterval.HourSpan = 0
recurInterval.MinuteSpan = 0
recurInterval.StartTime = startTime
recurInterval.IsGMT = isGmt
' Call WriteToString method to decode the schedule token.
' Note: The initial parameter of the WriteToString method requires an array.
Set clsScheduleMethod = connection.Get("SMS_ScheduleMethods")
clsScheduleMethod.WriteToString Array(recurInterval), scheduleString
' Output schedule token as an interval string.
WScript.Echo "Schedule Token Interval String: " & scheduleString
End Sub
public void CreateDailyRecurringScheduleToken(WqlConnectionManager connection,
int hourDuration,
int daySpan,
string startTime,
bool isGmt)
{
try
{
// Create a new recurring interval schedule object.
// Note: There are several types of schedule classes available, each defines a different type of schedule.
IResultObject recurInterval = connection.CreateEmbeddedObjectInstance("SMS_ST_RecurInterval");
// Populate the schedule properties.
recurInterval["DayDuration"].IntegerValue = 0;
recurInterval["HourDuration"].IntegerValue = hourDuration;
recurInterval["MinuteDuration"].IntegerValue = 0;
recurInterval["DaySpan"].IntegerValue = daySpan;
recurInterval["HourSpan"].IntegerValue = 0;
recurInterval["MinuteSpan"].IntegerValue = 0;
recurInterval["StartTime"].StringValue = startTime;
recurInterval["IsGMT"].BooleanValue = isGmt;
// Creating array to use as a parameters for the WriteToString method.
List<IResultObject> scheduleTokens = new List<IResultObject>();
scheduleTokens.Add(recurInterval);
// Creating dictionary object to pass parameters to the WriteToString method.
Dictionary<string, object> inParams = new Dictionary<string, object>();
inParams["TokenData"] = scheduleTokens;
// Initialize the outParams object.
IResultObject outParams = null;
// Call WriteToString method to decode the schedule token.
outParams = connection.ExecuteMethod("SMS_ScheduleMethods", "WriteToString", inParams);
// Output schedule token as an interval string.
// Note: The return value for this method is always 0, so this check is just best practice.
if (outParams["ReturnValue"].IntegerValue == 0)
{
Console.WriteLine("Schedule Token Interval String: " + outParams["StringData"].StringValue);
}
}
catch (SmsException ex)
{
Console.WriteLine("Failed. Error: " + ex.InnerException.Message);
}
}
The example method has the following parameters:
Parameter | Type | Description |
---|---|---|
connection |
- Managed: WqlConnectionManager - VBScript: SWbemServices |
A valid connection to the SMS Provider. |
hourDuration |
- Managed: Integer - VBScript: Integer |
Number of hours during which the scheduled action occurs. Allowable values are in the range 0-23. The default value is 0, indicating no duration. |
daySpan |
- Managed: Integer - VBScript: Integer |
Number of days spanning schedule intervals. Allowable values are in the range 0-31. The default value is 0. |
startTime |
- Managed: String (DateTime)- VBScript: String (DateTime) |
Date and time when the scheduled action takes place. The default value is "19700201000000.000000+***". This is the format in which (WMI) CIM DATETIME values are stored. |
isGmt |
- Managed: Boolean - VBScript: Boolean |
true if the time is in Coordinated Universal Time (UTC). The default value is false , for local time. |
Compiling the Code
The C# example has the following compilation requirements:
Namespaces
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managmentprovider
adminui.wqlqueryengine
Robust Programming
For more information about error handling, see About Configuration Manager Errors.
.NET Framework Security
For more information about securing Configuration Manager applications, see Configuration Manager role-based administration.
See Also
Configuration Manager Software Development Kit
SMS_ST_NonRecurring Server WMI Class
SMS_ST_RecurInterval Server WMI Class
SMS_ST_RecurMonthlyByDate Server WMI Class
SMS_ST_RecurMonthlyByWeekday Server WMI Class
SMS_ST_RecurWeekly Server WMI Class
SMS_ScheduleMethods Server WMI Class
ReadFromString Method in Class SMS_ScheduleMethods
WriteToString Method in Class SMS_ScheduleMethods
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for