Condividi tramite


Come importare un nuovo computer in Configuration Manager

È possibile aggiungere un nuovo computer direttamente al database Configuration Manager chiamando il metodo ImportMachineEntry nella classe SMS_Site. Può essere usato per distribuire sistemi operativi in computer che non sono ancora stati individuati automaticamente da Configuration Manager.

Consiglio

È anche possibile usare il cmdlet Di PowerShell Import-CMComputerInformation .

È necessario fornire le informazioni seguenti:

  • Nome computer NETBIOS

  • MAC address

  • SMBIOS GUID

Nota

L'indirizzo MAC deve essere per una scheda di rete con un driver in Windows PE. L'indirizzo MAC deve essere in formato due punti. Ad esempio, 00:00:00:00:00:00. Altri formati impediranno al client di ricevere i criteri.

È consigliabile aggiungere un computer appena importato a una raccolta. In questo modo è possibile creare immediatamente annunci per la distribuzione di sistemi operativi nel computer.

È possibile associare un nuovo computer a un computer di riferimento. Per altre informazioni, vedere Come creare un'associazione tra due computer in Configuration Manager.

Per aggiungere un nuovo computer

  1. Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.

  2. Chiamare il metodo ImportMachineEntry nella classe SMS_Site.

  3. Aggiungere l'identificatore di risorsa ottenuto da ImportMachineEntry a una raccolta.

Esempio

Il metodo di esempio seguente aggiunge un nuovo computer a Configuration Manager. Il metodo ImportMachineEntry nella classe SMS_Site viene usato per importare il computer. Il computer viene quindi aggiunto a una raccolta personalizzata. Raccolta "All Systems".

Importante

Nella versione precedente di questo esempio, il computer è stato aggiunto alla raccolta "Tutti i sistemi". Non è più possibile modificare le raccolte predefinite, usare invece una raccolta personalizzata.

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice 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;  
    }  
}  

Il metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
connection -Gestito: WqlConnectionManager
- VBScript: SWbemServices
- Connessione valida al provider SMS.
netBiosName -Gestito: String
-Vbscript: String
- Nome NETBIOS del computer.
smBiosGuid -Gestito: String
-Vbscript: String
GUID SMBIOS per il computer.
MacAddress -Gestito: String
-Vbscript: String
Indirizzo MAC per il computer nel formato seguente: 00:00:00:00:00:00.

Compilazione del codice

L'esempio C# presenta i requisiti di compilazione seguenti:

Namespaces

Sistema

System.collections.generic

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmazione efficiente

Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.

Sicurezza di .NET Framework

Per altre informazioni sulla protezione delle applicazioni Configuration Manager, vedere Configuration Manager'amministrazione basata sui ruoli.

Vedere anche

Metodo ImportMachineEntry nella classe SMS_Site
Informazioni sulla gestione dei computer di distribuzione del sistema operativo