Welcome to MSDN Blogs Sign in | Join | Help

Creating a new task with overridable parameters

Couple of days ago I saw a question on one of the newsgroups regarding creating a task where the operator can specify one or more parameters that are used by the task when launching the task. Unfortunately it’s not possible to create such as task today in the OpsMgr console, however you can do this using the SP1 RC authoring console or just in XML. The key part is defining a new WriteAction and specifying which parameter can be overriden (see the highlighted section below). Here is a sample MP that shows how you can do this in XML:

<ManagementPack xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Manifest>

<Identity>

<ID>SampleMP.UserConfigurableTaskParameters</ID>

<Version>1.0.0000.0</Version>

</Identity>

<Name>Sample MP - User Configurable Tasks Parameters</Name>

<References>

<Reference Alias="System">

<ID>System.Library</ID>

<Version>6.0.5000.0</Version>

<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

</Reference>

<Reference Alias="SystemHealth">

<ID>System.Health.Library</ID>

<Version>6.0.5000.0</Version>

<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

</Reference>

<Reference Alias="SystemPerf">

<ID>System.Performance.Library</ID>

<Version>6.0.5000.0</Version>

<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

</Reference>

<Reference Alias="Windows">

<ID>Microsoft.Windows.Library</ID>

<Version>6.0.5000.0</Version>

<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

</Reference>

<Reference Alias="SC">

<ID>Microsoft.SystemCenter.Library</ID>

<Version>6.0.5000.0</Version>

<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

</Reference>

</References>

</Manifest>

<TypeDefinitions>

<ModuleTypes>

<WriteActionModuleType ID="SampleTaskWriteAction" Accessibility="Internal" Batching="false">

<Configuration>

<xsd:element name="Parameter1" type="xsd:string"/>

<xsd:element name="Parameter2" type="xsd:string"/>

<xsd:element name="Parameter3" type="xsd:string"/>

<xsd:element name="TimeoutSeconds" type="xsd:int"/>

</Configuration>

<OverrideableParameters>

<OverrideableParameter ID="Parameter1" Selector="$Config/Parameter1$" ParameterType="string" />

<OverrideableParameter ID="Parameter2" Selector="$Config/Parameter2$" ParameterType="string" />

<OverrideableParameter ID="Parameter3" Selector="$Config/Parameter3$" ParameterType="string" />

<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int" />

</OverrideableParameters>

<ModuleImplementation Isolation="Any">

<Composite>

<MemberModules>

<WriteAction ID="WA" TypeID="Windows!Microsoft.Windows.ScriptWriteAction">

<ScriptName>SampleScript.js</ScriptName>

<Arguments>"$Config/Parameter1$" "$Config/Parameter2$" "$Config/Parameter3$"</Arguments>

<ScriptBody>

var scriptArgs = WScript.Arguments;

WScript.Echo("Parameter 1 " + scriptArgs(0));

WScript.Echo("Parameter 2 " + scriptArgs(1));

WScript.Echo("Parameter 3 " + scriptArgs(2));

</ScriptBody>

<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>

</WriteAction>

</MemberModules>

<Composition>

<Node ID="WA" />

</Composition>

</Composite>

</ModuleImplementation>

<InputType>System!System.BaseData</InputType>

</WriteActionModuleType>

</ModuleTypes>

</TypeDefinitions>

<Monitoring>

<Tasks>

<Task ID="SampleTask" Accessibility="Internal" Enabled="true" Target="Windows!Microsoft.Windows.Computer" Timeout="300" Remotable="true">

<Category>Maintenance</Category>

<WriteAction ID="WA" TypeID="SampleTaskWriteAction">

<Parameter1>Parameter1Value</Parameter1>

<Parameter2>Parameter2Value</Parameter2>

<Parameter3>Parameter3Value</Parameter3>

<TimeoutSeconds>300</TimeoutSeconds>

</WriteAction>

</Task>

</Tasks>

</Monitoring>

</ManagementPack>

Published Tuesday, December 11, 2007 6:22 PM by Boris Yanushpolsky
Filed under:

Attachment(s): SampleMP.UserConfigurableTaskParameters.xml

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Untitled 1

Tuesday, December 11, 2007 2:49 PM by Untitled 1

# A Great place for SCOM scripts

Sunday, July 13, 2008 7:10 AM by Dario IT Solutions Blog

Check out Boris Yanushpolsky&#39;s blog ( http://blogs.msdn.com/boris_yanushpolsky ). Boris is an SCOM

# re: Creating a new task with overridable parameters

Wednesday, July 08, 2009 5:05 PM by Alanz

Is it possible to have mutiple target for the task ?

# re: Creating a new task with overridable parameters

Monday, July 13, 2009 12:56 PM by Boris Yanushpolsky

No. A task can target only a single type. However, the task will also work for any derived types. For example, if you target a task to Windows Computer, it will work for all instaces of WindowsComputer(2003,2008,...).

Leave a Comment

(required) 
required 
(required) 

  
Enter Code Here: Required
 
Page view tracker