/Configuration Manager/SCCM2012IntegrationPack/Objects/ModifyTaskSequencePackage.cs
# · C# · 97 lines · 83 code · 12 blank · 2 comment · 4 complexity · 66fcbf8945179aa9f490bd491c5a89be MD5 · raw file
- using System;
- using System.Collections.Generic;
- using System.Text;
- using Microsoft.SystemCenter.Orchestrator.Integration;
- using System.Management;
- using System.Management.Instrumentation;
- using SCCM2012Interop;
- using Microsoft.ConfigurationManagement;
- using Microsoft.ConfigurationManagement.ManagementProvider;
- using Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine;
-
-
- namespace SCCM2012IntegrationPack
- {
- [Activity("Modify SCCM Task Sequence Package")]
- public class ModifyTaskSequencePackage : IActivity
- {
- private ConnectionCredentials settings;
- private String userName = String.Empty;
- private String password = String.Empty;
- private String SCCMServer = String.Empty;
-
- private int ObjCount = 0;
-
- [ActivityConfiguration]
- public ConnectionCredentials Settings
- {
- get { return settings; }
- set { settings = value; }
- }
- public void Design(IActivityDesigner designer)
- {
- designer.AddInput("Package ID").WithDefaultValue("ABC00000");
-
- //Setup WQL Connection and WMI Management Scope
- WqlConnectionManager connection = CM2012Interop.connectSCCMServer(settings.SCCMSERVER, settings.UserName, settings.Password);
- using(connection)
- {
- String[] propertyNameChoices = CM2012Interop.getSCCMObjectPropertyNames(connection, "SMS_TaskSequencePackage");
- String[] propertyTypeChoices = new String[] { "StringValue", "DateTimeValue", "IntegerValue", "BooleanValue" };
-
- foreach (String propertyName in propertyNameChoices)
- {
- designer.AddInput(propertyName + " : Property Type").WithListBrowser(propertyTypeChoices).WithDefaultValue("StringValue").NotRequired();
- designer.AddInput(propertyName + " : Property Value").NotRequired();
- }
-
- designer.AddCorellatedData(typeof(taskSequencePackage));
- designer.AddOutput("Number of Task Sequence Packages");
- }
- }
- public void Execute(IActivityRequest request, IActivityResponse response)
- {
- SCCMServer = settings.SCCMSERVER;
- userName = settings.UserName;
- password = settings.Password;
-
- String objID = request.Inputs["Package ID"].AsString();
-
- //Setup WQL Connection and WMI Management Scope
- WqlConnectionManager connection = CM2012Interop.connectSCCMServer(SCCMServer, userName, password);
- try
- {
- String[] propertyNameChoices = CM2012Interop.getSCCMObjectPropertyNames(connection, "SMS_TaskSequencePackage");
- foreach (String propertyName in propertyNameChoices)
- {
- if ((request.Inputs.Contains(propertyName + " : Property Type")) && (request.Inputs.Contains(propertyName + " : Property Value")))
- {
- CM2012Interop.modifySCCMTaskSequencePackage(connection, objID, request.Inputs[(propertyName + " : Property Type")].AsString(), propertyName, request.Inputs[(propertyName + " : Property Value")].AsString());
- }
- }
-
- IResultObject col = CM2012Interop.getSCCMTaskSequencePackage(connection, "PackageID LIKE '" + objID + "'");
- if (col != null)
- {
- response.WithFiltering().PublishRange(getObjects(col));
-
- }
- response.Publish("Number of Task Sequence Packages", ObjCount);
- }
- finally
- {
- connection.Close();
- connection.Dispose();
- }
- }
- private IEnumerable<taskSequencePackage> getObjects(IResultObject objList)
- {
- foreach (IResultObject obj in objList)
- {
- ObjCount++;
- yield return new taskSequencePackage(obj);
- }
- }
- }
- }