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
Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.
Chiamare il metodo ImportMachineEntry nella classe SMS_Site.
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