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;
            }
        }
Exemple #2
0
        /// <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();
            }
        }