Cómo importar un nuevo equipo en Configuration Manager
Agregue un nuevo equipo directamente a la base de datos Configuration Manager llamando al método ImportMachineEntry en la clase SMS_Site. Esto se puede usar para implementar sistemas operativos en equipos que aún no se han detectado automáticamente por Configuration Manager.
Sugerencia
También puede usar el cmdlet Import-CMComputerInformation de PowerShell.
Debe proporcionar la siguiente información:
Nombre del equipo NETBIOS
Dirección MAC
SMBIOS GUID
Nota:
La dirección MAC debe ser para un adaptador de red que tenga un controlador en Windows PE. La dirección MAC debe estar en formato de dos puntos. Por ejemplo, 00:00:00:00:00:00
. Otros formatos impedirán que el cliente reciba la directiva.
Debe agregar un equipo recién importado a una colección. Esto le permite crear inmediatamente anuncios para implementar sistemas operativos en el equipo.
Puede asociar un nuevo equipo a un equipo de referencia. Para obtener más información, vea Cómo crear una asociación entre dos equipos en Configuration Manager.
Para agregar un nuevo equipo
Configure una conexión con el proveedor de SMS. Para obtener más información, consulte Aspectos básicos del proveedor de SMS.
Agregue el identificador de recurso que obtiene de ImportMachineEntry a una colección.
Ejemplo
El siguiente método de ejemplo agrega un nuevo equipo a Configuration Manager. El método ImportMachineEntry de la clase SMS_Site se usa para importar el equipo. A continuación, el equipo se agrega a una colección personalizada. Colección "Todos los sistemas".
Importante
En la versión anterior de este ejemplo, el equipo se agregó a la colección "Todos los sistemas". Ya no es posible modificar las colecciones integradas, sino usar una colección personalizada.
Para obtener información sobre cómo llamar al código de ejemplo, vea Llamar a fragmentos de código de 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;
}
}
El método de ejemplo tiene los parámetros siguientes:
Parámetro | Tipo | Descripción |
---|---|---|
connection |
-Administrado: WqlConnectionManager - VBScript: SWbemServices |
- Una conexión válida al proveedor de SMS. |
netBiosName |
-Administrado: String -Vbscript: String |
- Nombre NETBIOS del equipo. |
smBiosGuid |
-Administrado: String -Vbscript: String |
GUID de SMBIOS para el equipo. |
MacAddress |
-Administrado: String -Vbscript: String |
La dirección MAC del equipo en el formato siguiente: 00:00:00:00:00:00 . |
Compilar el código
El ejemplo de C# tiene los siguientes requisitos de compilación:
Espacios de nombres
System
System.Collections.Generic
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Ensamblado
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Programación sólida
Para obtener más información sobre el control de errores, consulte Acerca de los errores de Configuration Manager.
Seguridad de .NET Framework
Para obtener más información sobre la protección de aplicaciones Configuration Manager, consulte Configuration Manager administración basada en roles.
Consulta también
Método ImportMachineEntry en la clase SMS_Site
Acerca de la administración de equipos de implementación del sistema operativo