Como importar um novo computador para Configuration Manager
Você adiciona um novo computador diretamente ao banco de dados Configuration Manager chamando o Método ImportMachineEntry na classe SMS_Site. Isso pode ser usado para implantar sistemas operacionais em computadores que ainda não foram descobertos automaticamente por Configuration Manager.
Dica
Você também pode usar o cmdlet Import-CMComputerInformation PowerShell.
Você deve fornecer as seguintes informações:
Nome do computador NETBIOS
Endereço MAC
SMBIOS GUID
Observação
O endereço MAC deve ser para um adaptador de rede que tenha um driver no Windows PE. O endereço MAC deve estar no formato colon. Por exemplo, 00:00:00:00:00:00
. Outros formatos impedirão que o cliente receba a política.
Você deve adicionar um computador recém-importado a uma coleção. Isso permite que você crie anúncios imediatamente para implantar sistemas operacionais no computador.
Você pode associar um novo computador a um computador de referência. Para obter mais informações, consulte Como criar uma associação entre dois computadores no Configuration Manager.
Para adicionar um novo computador
Configure uma conexão com o Provedor de SMS. Para obter mais informações, confira Os fundamentos do Provedor de SMS.
Adicione o identificador de recurso que você obtém de ImportMachineEntry a uma coleção.
Exemplo
O método de exemplo a seguir adiciona um novo computador a Configuration Manager. O Método ImportMachineEntry na classe SMS_Site é usado para importar o computador. Em seguida, o computador é adicionado a uma coleção personalizada. Coleção "Todos os Sistemas".
Importante
Na versão anterior deste exemplo, o computador foi adicionado à coleção "Todos os Sistemas". Não é mais possível modificar as coleções internas, usar uma coleção personalizada.
Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.
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;
}
}
O método de exemplo tem os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
---|---|---|
connection |
-Gerenciado: WqlConnectionManager - VBScript: SWbemServices |
- Uma conexão válida com o Provedor de SMS. |
netBiosName |
-Gerenciado: String -Vbscript: String |
- O nome NETBIOS do computador. |
smBiosGuid |
-Gerenciado: String -Vbscript: String |
O GUID do SMBIOS para o computador. |
MacAddress |
-Gerenciado: String -Vbscript: String |
O endereço MAC do computador no seguinte formato: 00:00:00:00:00:00 . |
Compilando o código
O exemplo C# tem os seguintes requisitos de compilação:
Namespaces
System
System.Collections.Generic
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Programação robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.
Segurança do .NET Framework
Para obter mais informações sobre como proteger aplicativos Configuration Manager, consulte Configuration Manager administração baseada em função.
Confira também
Método ImportMachineEntry na classe SMS_Site
Sobre o gerenciamento de computador de implantação do sistema operacional