private void addCMDeviceVariable( int strResourceID, string strVariableName, string strVariableValue) { // Connect to CM Site SmsNamedValuesDictionary namedValues = new SmsNamedValuesDictionary(); WqlConnectionManager connection = new WqlConnectionManager(namedValues); connection.Connect("CM01"); // Get the computer settings. IResultObject computerSettings = null; IResultObject computerSettingsQuery = connection.QueryProcessor.ExecuteQuery( "Select * from SMS_MachineSettings where ResourceId = '" + strResourceID + "'"); foreach (IResultObject settings in computerSettingsQuery) { settings.Get(); computerSettings = settings; } if (computerSettings == null) // It does not exist, so create it. { computerSettings = connection.CreateInstance(@"SMS_MachineSettings"); computerSettings["ResourceID"].IntegerValue = strResourceID; computerSettings["SourceSite"].StringValue = "PS1"; computerSettings.Put(); computerSettings.Get(); } // Create the computer variable. List<IResultObject> computerVariables = computerSettings.GetArrayItems("MachineVariables"); IResultObject computerVariable = connection.CreateEmbeddedObjectInstance("SMS_MachineVariable"); computerVariable["Name"].StringValue = strVariableName; computerVariable["Value"].StringValue = strVariableValue; computerVariable["IsMasked"].BooleanValue = false; // Add the computer variable to the computer settings. computerVariables.Add(computerVariable); computerSettings.SetArrayItems("MachineVariables", computerVariables); computerSettings.Put(); // Close Connection connection.Dispose(); }
private int CreateDevice(string strDeviceName, string strDeviceMacadress, string strLimtitingCollectionID) { try { if (strDeviceName == null && strDeviceMacadress == null) { throw new ArgumentNullException("DeviceName or MACAdress most be defined"); } SmsNamedValuesDictionary namedValues = new SmsNamedValuesDictionary(); WqlConnectionManager connection = new WqlConnectionManager(namedValues); connection.Connect("CM01"); Dictionary<string, object> newDevice2 = new Dictionary<string, object>(); newDevice2.Add("NetbiosName", strDeviceName); newDevice2.Add("SMBIOSGUID", null); // For Future things newDevice2.Add("MACAddress", strDeviceMacadress); newDevice2.Add("OverwriteExistingRecord", false); // Create CM Device to site database IResultObject outParam = connection.ExecuteMethod("SMS_Site", "ImportMachineEntry", newDevice2); if (string.IsNullOrEmpty(strLimtitingCollectionID) == false) { IResultObject collection = connection.GetInstance("SMS_Collection.collectionID='" + strLimtitingCollectionID + "'"); IResultObject collectionRule = connection.CreateEmbeddedObjectInstance("SMS_CollectionRuleDirect"); collectionRule["ResourceClassName"].StringValue = "SMS_R_SYSTEM"; collectionRule["ResourceID"].IntegerValue = outParam["ResourceID"].IntegerValue; Dictionary<string, object> inParam2 = new Dictionary<string, object>(); inParam2.Add("collectionRule", collectionRule); // Add Device to specified collection. Empty will automatcally add device to All Systems collection.ExecuteMethod("AddMemberShipRule", inParam2); } return outParam["ResourceID"].IntegerValue; } catch (SmsException e) { Console.WriteLine("Failed to add the computer. " + e.Message); throw; } }