共用方式為


如何將新電腦匯入Configuration Manager

您可以在類別SMS_Site中呼叫 ImportMachineEntry 方法,將新電腦直接新增至Configuration Manager資料庫。 這可用來將作業系統部署到尚未由Configuration Manager自動探索到的電腦。

提示

您也可以使用 Import-CMComputerInformation PowerShell Cmdlet。

您必須提供下列資訊:

  • NETBIOS 電腦名稱稱

  • MAC 位址

  • SMBIOS GUID

注意事項

MAC 位址必須是 Windows PE 中具有驅動程式的網路介面卡。 MAC 位址必須是冒號格式。 例如,00:00:00:00:00:00。 其他格式會防止用戶端接收原則。

您應該將新匯入的電腦新增至集合。 這可讓您立即建立公告,以將作業系統部署至電腦。

您可以將新電腦與參照電腦產生關聯。 如需詳細資訊,請參閱如何在 Configuration Manager 中建立兩部電腦之間的關聯

若要新增電腦

  1. 設定與 SMS 提供者的連線。 如需詳細資訊,請 參閱 SMS 提供者基本概念

  2. 在類別SMS_Site 中呼叫 ImportMachineEntry 方法

  3. 將您從 ImportMachineEntry 取得的資源識別碼新增至集合。

範例

下列範例方法會將新電腦新增至 Configuration Manager。 類別 SMS_Site中的 ImportMachineEntry 方法 是用來匯入電腦。 然後,電腦會新增至自訂集合。 「All Systems」 集合。

重要事項

在此範例的舊版中,電腦已新增至「所有系統」集合。 您無法再修改內建集合,請改用自訂集合。

如需呼叫範例程式碼的相關資訊,請參閱呼叫Configuration Manager程式碼片段

Sub AddNewComputer (connection, netBiosName, smBiosGuid, macAddress)  

    Dim inParams  
    Dim outParams  
    Dim siteClass  
    Dim collection  
    Dim collectionRule  

    If (IsNull(smBiosGuid) = True) And (IsNull(macAddress) = True) Then  
        WScript.Echo "smBiosGuid or macAddress must be defined"  
        Exit Sub  
    End If       

    If IsNull(macAddress) = False Then  
        macAddress = Replace(macAddress,"-",":")  
    End If      

    ' Obtain an InParameters object specific  
    ' to the method.  

    Set siteClass = connection.Get("SMS_Site")  
    Set inParams = siteClass.Methods_("ImportMachineEntry"). _  
        inParameters.SpawnInstance_()  

    ' Add the input parameters.  
    inParams.Properties_.Item("MACAddress") =  macAddress  
    inParams.Properties_.Item("NetbiosName") =  netBiosName  
    inParams.Properties_.Item("OverwriteExistingRecord") =  False  
    inParams.Properties_.Item("SMBIOSGUID") =  smBiosGuid  

    ' Add the computer.  
    Set outParams = connection.ExecMethod("SMS_Site", "ImportMachineEntry", inParams)  

   ' Add the computer to the all systems collection.  
   set collection = connection.Get("SMS_Collection.CollectionID='ABC0000A'")  

   set collectionRule=connection.Get("SMS_CollectionRuleDirect").SpawnInstance_  

   collectionRule.ResourceClassName="SMS_R_System"  
   collectionRule.ResourceID= outParams.ResourceID  

   collection.AddMembershipRule collectionRule  

End Sub  
public int AddNewComputer(  
    WqlConnectionManager connection,   
    string netBiosName,   
    string smBiosGuid,   
    string macAddress)  
{  
    try  
    {  
        if (smBiosGuid == null && macAddress == null)  
        {  
            throw new ArgumentNullException("smBiosGuid or macAddress must be defined");  
        }  

        // Reformat macAddress to : separator.  
        if (string.IsNullOrEmpty(macAddress) == false)  
        {  
            macAddress = macAddress.Replace("-", ":");  
        }  

        // Create the computer.  
        Dictionary<string, object> inParams = new Dictionary<string, object>();  
        inParams.Add("NetbiosName", netBiosName);  
        inParams.Add("SMBIOSGUID", smBiosGuid);  
        inParams.Add("MACAddress", macAddress);  
        inParams.Add("OverwriteExistingRecord", false);  

        IResultObject outParams = connection.ExecuteMethod(  
            "SMS_Site",  
            "ImportMachineEntry",  
            inParams);  

        // Add to All System collection.  
        IResultObject collection = connection.GetInstance("SMS_Collection.collectionId='ABC0000A'");  
        IResultObject collectionRule = connection.CreateEmbeddedObjectInstance("SMS_CollectionRuleDirect");  
        collectionRule["ResourceClassName"].StringValue = "SMS_R_System";  
        collectionRule["ResourceID"].IntegerValue = outParams["ResourceID"].IntegerValue;  

        Dictionary<string, object> inParams2 = new Dictionary<string, object>();  
        inParams2.Add("collectionRule", collectionRule);  

        collection.ExecuteMethod("AddMembershipRule", inParams2);  

        return outParams["ResourceID"].IntegerValue;  
    }  
    catch (SmsException e)  
    {  
        Console.WriteLine("failed to add the computer" + e.Message);  
        throw;  
    }  
}  

範例方法具有下列參數:

參數 Type 描述
connection -管理: WqlConnectionManager
- VBScript: SWbemServices
- SMS 提供者的有效連線。
netBiosName -管理: String
- VBScript: String
- 電腦 NETBIOS 名稱。
smBiosGuid -管理: String
- VBScript: String
電腦的 SMBIOS GUID。
MacAddress -管理: String
- VBScript: String
電腦的 MAC 位址格式如下:。 00:00:00:00:00:00

正在編譯程式碼

C# 範例具有下列編譯需求:

命名空間

系統

System.Collections.Generic

Microsoft。ConfigurationManagement.ManagementProvider

Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine

組件

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

健全的程式設計

如需錯誤處理的詳細資訊,請參閱關於Configuration Manager錯誤

.NET Framework 安全性

如需保護Configuration Manager應用程式的詳細資訊,請參閱Configuration Manager角色型系統管理

另請參閱

類別SMS_Site中的 ImportMachineEntry 方法
關於作業系統部署電腦管理