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; } }
/// <summary> /// Create a computer system account in SCCM. /// </summary> /// <param name="computerName">The name of the computer.</param> /// <param name="macAddress">The MAC Address of the computer.</param> public static void CreateComputer(string computerName, string macAddress) { WqlConnectionManager connection = null; try { var namedValues = new SmsNamedValuesDictionary(); connection = new WqlConnectionManager(namedValues); var inParams = new Dictionary<string, object> { {"NetbiosName", computerName}, {"MACAddress", macAddress.Replace('-', ':')}, {"OverwriteExistingRecord", true} }; if (Dns.GetHostName().Equals(Properties.Resources.SCCMServerName, StringComparison.CurrentCultureIgnoreCase)) { connection.Connect(Properties.Resources.SCCMServerUPN); } else { connection.Connect(Properties.Resources.SCCMServerUPN, Properties.Resources.SCCMAccountName, Properties.Resources.sccm); } connection.ExecuteMethod("SMS_Site", "ImportMachineEntry", inParams); } catch (Exception ex) { throw new Exception("An error occurred in CreateComputer.\n" + ex.Message); } finally { connection?.Dispose(); } }