Импорт нового компьютера в Configuration Manager
Новый компьютер добавляется непосредственно в базу данных Configuration Manager путем вызова метода ImportMachineEntry в классе SMS_Site. Его можно использовать для развертывания операционных систем на компьютерах, которые еще не были обнаружены автоматически Configuration Manager.
Совет
Вы также можете использовать командлет PowerShell Import-CMComputerInformation .
Необходимо указать следующие сведения:
Имя компьютера NETBIOS
MAC-адрес
ИДЕНТИФИКАТОР SMBIOS
Примечание.
MAC-адрес должен быть для сетевого адаптера с драйвером в Среде предустановки Windows. MAC-адрес должен иметь формат двоеточия. Например, 00:00:00:00:00:00
. Другие форматы не позволят клиенту получать политику.
Необходимо добавить в коллекцию только что импортированный компьютер. Это позволяет сразу же создавать объявления для развертывания операционных систем на компьютере.
Новый компьютер можно связать с компьютером-образцом. Дополнительные сведения см. в статье Создание связи между двумя компьютерами в Configuration Manager.
Добавление нового компьютера
Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Основы поставщика SMS.
Добавьте идентификатор ресурса, полученный из ImportMachineEntry, в коллекцию.
Пример
В следующем примере метод добавляет новый компьютер в Configuration Manager. Для импорта компьютера используется метод ImportMachineEntry в классе SMS_Site . Затем компьютер добавляется в настраиваемую коллекцию. Коллекция "Все системы".
Важно!
В предыдущей версии этого примера компьютер был добавлен в коллекцию "Все системы". Изменить встроенные коллекции больше нельзя, вместо этого используйте настраиваемую коллекцию.
Сведения о вызове примера кода см. в разделе Вызов фрагментов кода 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;
}
}
Метод примера имеет следующие параметры:
Параметр | Тип | Описание |
---|---|---|
connection |
-Управляемых: WqlConnectionManager — VBScript: SWbemServices |
— допустимое подключение к поставщику SMS. |
netBiosName |
-Управляемых: String -Vbscript: String |
— netBIOS-имя компьютера. |
smBiosGuid |
-Управляемых: String -Vbscript: String |
ИДЕНТИФИКАТОР GUID SMBIOS для компьютера. |
MacAddress |
-Управляемых: String -Vbscript: String |
MAC-адрес компьютера в следующем формате: 00:00:00:00:00:00 . |
Компиляция программы
Пример C# имеет следующие требования к компиляции:
Пространства имен
System;
System.Collections.Generic;
Майкрософт. ConfigurationManagement.ManagementProvider
Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Надежное программирование
Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.
Безопасность .NET Framework
Дополнительные сведения о защите приложений Configuration Manager см. в статье Configuration Manager администрирование на основе ролей.
См. также
Метод ImportMachineEntry в классе SMS_Site
Сведения об управлении компьютером развертывания ОС