Клиент SCCM не может зарегистрироваться на сайте

Если после установки клиента, он не появляется в консоли SCCM как установленые, на самом клиенте отсуствует список программ для установки и другая видимая активность клиента, то возможно клиент просто не может подключиться к сайту.
В моем случае в логах клиента практически не было лог файлов (что и понятно, ведь клиент толком работать не начал), единственным логом, в котором была какая-то активность, был ClientIDManagerStartup.log.
В нем периодически появлялись события типа:
Error initializing client registration (0x80040222)
RegTask: Failed to refresh MP. Error: 0x80004005
.
В моем случае помогла просто переустановка клиента, в другом аналогичном случае помог вывод-ввод компьютера из домена. (на необходимость повторного ввода компьютера в домен указывало netbios имя компьютера, которое отличалось от полного доменного имени компьютера).

Активация агента удаленного управления SCCM 2007

Бывает так, что по той или иной причине подключиться удаленному компьютеру средствами SCCM невозможно по причине деактивированного агента удаленного управления. Можно ждать пока дойдут политики и он включится, а можно активировать его сразу, исправив параметр в реестре.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Client\Client Components\Remote Control]
“Enabled”=dword:00000001

Настройка аппаратной инвентаризации для сбора данных из реестра

Configuration Manager 2007 собирает данные о аппаратном обеспечении на основе конфигурации, которая находится в директории <ConfigMgr install directory>\inboxes\clifiles.src\hinv. Настройки хранятся в двух файлах configuration.mof и sms_def.mof.

Configuration.mof
Используется для создания классов данных, которые собираются в процессе аппаратной инвентаризации. В качестве данных для классов могут выступать данные, находящиеся в репозитории WMI или ключах реестра.

Sms_def.mof
В данном файле содержатся определения классов, которые используются агентом аппаратной инвентаризации для определения данных, которые должны быть собраны в процессе аппаратной инвентаризации.

Учитывая, что аппаратная инвентаризация собственно таковой не является, можно сконфигурировать клиента аппаратной инвентаризации для сбора любых данных. Данные должны быть помещены либо в хранилище WMI либо в реестр. Создадим несколько записей в реестре, а потом соберем их при помощи агента аппаратной инвентаризации.

Создадим в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ ключ TestMSKey. И в данном ключе создадим 3 строковых значения Value1,Value2,Value3 со сзначениями соответственно test1,test2,test3.

Далее вносим соответствующие добавления в файл configuration.mof

#pragma namespace(“\\\\.\\root\\CIMV2“)
#pragma deleteclass(“RegMSKey“, NOFAIL)
[ dynamic, provider(“RegProv”),ClassContext(“local|HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\TestMSKey“)]

class RegMSKey
{
[Key] string MyKeyName;
[PropertyContext(“Value1“)] string Vl1;
[PropertyContext(“Value2“)] string Vl2;
[PropertyContext(“Value3“)] string Vl3;
};

Примечание: изменять нужно только что, что выделено жирным. После редактирования и сохранения файла configuration.mof можно убедиться что Configuration Manager правильно воспринял конфигурацию. Для этого необходимо перейти в папку <ConfigMgr install directory>\data\hinvarchive и убедиться что отсуствует только что созданный файл configuration.mof.bad.bak и открыть файл configuration.mof и убедиться что их него не исчезли только что введеные строки конфигурации. Для отсутствия проблем при копировании вышеприведенного примера, его лучше ввести вручную. При копировании из статьи добавляются невидимые спец-символы, которые препятствуют нормальному восприятию конфигурации.

Далее вносим изменения в файл Sms_def.mof

#pragma namespace (“\\\\.\\root\\cimv2\\sms“)

#pragma deleteclass(“RegMSKey“,NOFAIL)
[ SMS_Report (TRUE),
SMS_Group_Name (“Test Inventory“),
SMS_Class_ID (“MICROSOFT|TestInventory|1.0“) ]

class RegMSKey : SMS_Class_Template
{
[SMS_Report (TRUE), Key ] string MyKeyName;
[SMS_Report (TRUE)] string Vl1;
[SMS_Report (TRUE)] string Vl2;
[SMS_Report (TRUE)] string Vl3;
};

Убеждаемся, что конфигурация воспринята как описано выше и ждем инвентаризации….

После цикла инвентаризации запускаем Resourse Explorer и смотрим результат:

По желанию можно создать отчеты и включить собранные данные в какой-либо отчет.

Дополнительную информацию можно найти здесь

Создание коллекций SCCM 2007 при помощи скрипта на powershell

Как известно для установки программ нужна коллекция, на которую advetersement и будет назначен. Причем жедательно эту коллекцию создавать, чтоб в нее попали только те компьютеры, на которых программа не установлена. Собственно мне надоело каждый раз делать одно и тоже, в результате чего родился скрипт. Скрипту в качестве параметров передается название программы, строка для отбора и если необходимо родительская коллекция, в которой необходимо создвать коллекцию. В результате создаются 2 коллекции – одна будет содержать компьютреы, на которых требуемая программа установлена, вторая на которых не установлена. Коллекции будут обновляться раз в сутки и автоматически создается Query based правило для автоматического заполнения коллекции.

В дальшейшем предполагается добавить возможно указывать версию программы, а также на выбор создавать только одну коллекцию

$Site = “site name”
$sccmServer = “sccmserver name”

function Create-SCCMCollection($parentCollectionName, $collectionName)
{
$ColClass = [WMIClass]”\\$sccmServer\Root\SMS\Site_$($Site):SMS_Collection”
$shClass = [WMIClass]”\\$sccmServer\Root\SMS\Site_$($Site):SMS_ST_RecurInterval”
$Col = $ColClass.PSBase.CreateInstance()
$Col.Name = $collectionName
$Col.OwnedByThisSite = $True
$Col.Comment = “Collection $collectionName”
$col.RefreshType = 2
$sh = $shClass.PSBase.CreateInstance();
$sh.dayspan = 1
$col.RefreshSchedule = $sh
$Col.psbase
$Col.psbase.Put()
$parentColID = (get-wmiobject -class “SMS_Collection” -namespace “root\sms\site_$($Site)” -computername “solsms” -filter “Name = ‘$parentCollectionName'”).collectionID
$NewCollectionID = (Get-WmiObject -computerName $sccmServer -namespace Root\SMS\Site_$Site -class SMS_Collection | where {$_.Name -eq $collectionName}).CollectionID $RelClass = [WMIClass]”\\$sccmServer\Root\SMS\Site_$($Site):SMS_CollectToSubCollect”
$Rel = $RelClass.PSBase.CreateInstance()
$Rel.ParentCollectionID = $parentColID
$Rel.SubCollectionID = $NewCollectionID
$Rel.psbase
$Rel.psbase.Put()

}

function AddQueryToCollection($collectionName, $query)
{
$host.UI.RawUI.ForegroundColor = “White”
$Method = “AddMembershipRule”
$colClass = get-wmiobject -class “SMS_Collection” -namespace “root\sms\site_$($Site)” -computername $sccmServer -filter “Name = ‘$collectionName'”
$objColRuleDirect = [WmiClass]”\\$sccmServer\root\sms\site_A01:SMS_CollectionRuleQuery”
$objColRuleDirect.psbase.Properties[“LimitToCollectionID”].value = “”
$objColRuleDirect.psbase.Properties[“QueryExpression”].value = $query
$objColRuleDirect.psbase.Properties[“RuleName”].value = “Auto Query Rule” $InParams = $colClass.psbase.GetMethodParameters($Method)
$InParams.collectionRule = $objColRuleDirect
$param = $objColRuleDirect.psbase.getMethodParameters(“ValidateQuery”)
$param.wqlquery = $query
$R = $objColRuleDirect.psbase.invokeMethod(“ValidateQuery”,$param,$null)
if ($R.ReturnValue -eq $True) {
$R = $colClass.psbase.InvokeMethod($Method, $inParams, $Null)
if ($R.ReturnValue -eq 0) {
write-Host “Query sucssesful added” $curObj.ResourceID
}
}
else {
$host.UI.RawUI.ForegroundColor = “Red”
write-Host “Error in query ” $query
$host.UI.RawUI.ForegroundColor = “White”
}
}
If ($args.length -eq 0) {
write-host “Please use command Softname SoftQuery Parent Collection Name”
exit
} $softname = $args[0]
$softquery = $args[1]
$parentcollection = $args[2]
If ($parentcollection.length -eq $null) {
write-host “Use default collections”
Create-SCCMCollection “Corporate Software Collections” $softname” Installed”
Create-SCCMCollection “Corporate Software Installation” $softname” Not Installed”
}
else{
write-host “Use custom collections”
Create-SCCMCollection $parentcollection $softname” Installed”
Create-SCCMCollection $parentcollection $softname” Not Installed”
}

$soft = $softquery
$selectFull = “SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name, SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup, SMS_R_SYSTEM.Client”
$selectShort = “SMS_R_System.ResourceID”
$queryPresentSoft = “select ” + $selectFull + ” from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like ‘” + $soft + “‘ and Active = 1 and Obsolete = 0”;
$querycontain = “select ” + $selectShort + ” from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like ‘” + $soft + “‘ and Active = 1 and Obsolete = 0”;
$queryNotPresentSoft = “select ” + $selectFull+” from SMS_R_System where ResourceId not in (“+$querycontain+”) and Active = 1 and Obsolete = 0″

AddQueryToCollection $softname” Installed” $queryPresentSoft
AddQueryToCollection $softname” Not Installed” $queryNotPresentSoft
$host.UI.RawUI.ForegroundColor = “Green”

Установка Windows XP c использованием SCCM и PXE

Удаленная установка Windows XP при помощи System Center Configuration Manager с использованием технологии PXE

System Center Configuration Manager является набором средств управления промышленного уровня, предоставляющий администраторам все доступные возможности контроля развертывания. Полная интеграция со средствами распространения ПО, управления исправлениями, драйверами, миграцией пользовательской среды, а также набор средств автоматизированной установки Windows и методология BDD обеспечивают поддержку всего жизненного цикла проекта развертывания любого размера. Интеграция со службой развертывания Windows позволяет осуществлять автоматическое развертывание с помощью технологии PXE.

Стандартными задачами, которые предлагает SCCM 2007 по умолчанию, являются создание образа установленной операционной системы и его последующее разворачивание. Вручную можно создавать любые задачи, которые например просто отформатируют все жесткие диски в организации. В данном руководстве рассматривается задача установки Windows XP и затем создание образа для дальнейшего развертывания. Некоторые скрин-шоты исключены для уменьшения места, но думаю ввести необходимые данные не составит труда.

Описание тестовой среды

Для развертыывания необходимо:

– Windows 2003 SP2 server с развернутыми службами Active directory;
– DHCP сервер;
– System Center Configuration Manager 2007;
– рабочая станция, поддерживающая загрузку по технологии PXE;
– немаршрутизируемая сеть;
– установочный диск Windows XP.

Имя домен контроллера, который будет также являться DHCP сервером и на нем же был развернут SCCM 2007 (Site code M01, maxx site) – serv1. Других серверов в тестовой среде нет. Также, отмечу, что в данном руководстве не затрагиваются вопросы безопасности. В тех случаях, когда где необходимы какие-либо учетные записи используется учетная запись доменного администратора.

Кроме SCCM 2007 нам понадобится служба WDS. WDS является опциональным компонентом Windows 2003 SP2. Для его установки идем в Control panel-> Add or Remove programs-> Add/Remove windows components (Или же в Server Manger в случае использования Windows Server 2008)

На этом установка службы WDS закончена. Никаких дополнительных действий по ее конфигурированию не требуется.

Следует отметить, что в случае расположения DHCP и WDS серверов на одном сервере, WDS службу таки нужно будет настраивать. Настройка сводится к запрету слушать 67 порт.

Следующим этапом будет конфигурирование DHCP сервера. Будем считать, что он настроен, авторизирован и успешно выполняет свои функции, но для использования его для загрузки PXE клиентов необходимо добавить опцию 060. Запускаем оснастку DHCP и добавляем опцию 060 со значением PXEClient в требуемой подсети.

Если сейчас попробовать попытаться загрузиться по сети на рабочей станции, мы увидим следующую картинку. Это будет означать что клиент успешно получил все параметры от DHCP сервера, но так и не дождался ответа от PXE сервера.

Далее приступаем к конфигурированию самого SCCM 2007

Необходимо настроить следующее

– Network Accsess account;
– добавить роль PXE service point;
– добавить 2 пакета (SCCM 2007 Client и XP sysprep);
– создать Operation System image package;
– создать Task Sequence для установки Windows XP;
– импортировать запись о клиентском компьютере.
– создать Advetisement для соответствующей коллекции.

Network Accsess account

Запускаем консоль управления SCCM 2007 (Start Menu->Programs->Microsoft System Center->Configuration Manager 2007->ConfigMgr Console

Разворачиваем Site Database->Site Management->M01->Site Settings->Client Agents, щелкаем двойным щелчком на Computer Client Agent и в открывшемся окне свойств на вкладке General нажимаем кнопку Set и указываем наш Network Access account, которым в тестовой среде является администратор домена

.

Добавление PXE service point

Запускаем консоль управления SCCM 2007 (Start Menu->Programs->Microsoft System Center->Configuration Manager 2007->ConfigMgr Console

Разворачиваем Site Database->Site Management->M01->Site Settings->Site Systems, выбираем наш сервер, щелкаем на нем правой кнопкой мышки и в выпадающем меню выбираем New Roles.

Дабы не смущать рабочую среду появлением еще одного PXE сервера, я установил параметр отвечать только на интерфейсе с определенным MAC адресом. Данный сетевой интерфейс находится в тестовом vlan и не пересекается с рабочей средой. Конфигурирование данного параметра не является обязательным.

После добавления данной роли добавляется еще одна Distribution point – SERV1\SMSPXEIMAGES$. На ней должны располагаться только загрузочные образы. Ничего другого на ней быть не должно. У нас имеются 2 загрузочных образа, для x86 и x64 платформ. Образы эти устанавливаются автоматически и где-либо искать их или устанавливать вручную нет необходимости. Нам необходимо лишь опубликовать на нужной Distribution point – SERV1\SMSPXEIMAGES$. В консоли управления разворачиваем Site Database->Computer Management->Operating System Dployment->Boot image (x86)->Distribution Poins, щелкаем на этой ветви правой кнопкой мышки и в выпадающем меню выбираем New Distribution Poins.


Также проделываем аналогичную операцию с х64 образом. Если вы не собраетесь использовать 64-х битные ОС, наличие этого образа все равно необходимо. Все дело в том, что практически все новые компьютеры являются x64 совместимыми и биос исправно об этом сообщает. Загрузка х64 образа не заставляет вас устанавливать 64-х битную ОС.

Импортирование записи о клиентском компьютере

SCCM при получении PXE запроса отвечает только тем клиентам, которых он знает. Для первоначального разворачивания системы на целевом компьютере необходимо импортировать данные о нем. В нашем случае идентификатором компьютера будет его MAC адрес. Для импортирования записи о компьютере в консоли управления разворачиваем Site Database->Computer Management->Software Distribution->Operating System Deployment->Computer Association щелкаем на этой ветке правой кнопкой мышки и в выпадающем меню выбираем New->Import Computer Information

В нашем случае мы выполняем импорт одного компьютера вручную, поэтому выбираем Import single computer

Затем указываем MAC адрес нашего компьютера и его имя.

Импортируем компьютер в коллекцию All systems

Собственно в этом месте можно уже начинать тестировать бездисковую загрузку. Если сейчас попробовать попытаться загрузиться по сети на рабочей станции, мы увидим следующую картинку. Это будет означать что клиент успешно получил все параметры от DHCP сервера, потом успешно получил загрузчик от PXE сервера и связался с SCCM сервером. После чего понял, что делать ему пока нечего и прекратил свою работу.

Дальше продолжать настрояки не имеет смысла, т.к. зупаскать задания просто-напросто будет некому.

Добавление необходимых пакетов (SCCM 2007 Client и XP sysprep)

В процессе разворачивания ОС SCCM автоматически устанавливает своих агентов на целевые рабочие станции, также для снятия образа установленной ОС Windows XP необходима программка sysprep (найти ее можно на диске с Windows XP в файле deploy.cab, для этого его нужно распаковать в какую-либо директорию).

Добавление пакета SCCM 2007 Client

Разворачиваем Site Database->Computer Management->Software Distribution->Packages щелкаем на этой ветке правой кнопкой мышки и в выпадающем меню выбираем New->Package.

В качестве Source directory указываем директорию с SCCM 2007 клиентом из сетевой папки SMS_(site code).

После добавления пакета не забываем его публиковать на Distribution point

Аналогично добавляем пакета для XPSP2 sysprep

В тестовой системе xpsp2 sysprep находится на SCOM 2007 сервере в папке c:\install\sysprep

После добавления пакета не забываем его публиковать на Distribution point

создание Operation System image package

Для этого нам необходимо скопировать содержимое диска с Windows XP SP2 в какую-либо директорию, которая должна быть доступна по сети. В тестовой системе это директория c:\install\XPSP2. Затем в консоли управления разворачиваем Site Database->Computer Management->Software Distribution->Operating System Dployment->Opareting System Install Packages щелкаем на этой ветке правой кнопкой мышки и в выпадающем меню выбираем Add Operating System install Package.

В качестве пути к инсталляции Windows XP SP2 указываем сетевой путь к корню содержимого диска. В нашем случае это \\serv1\Install\XPSP2

После добавления пакета не забываем его публиковать на Distribution point

Создание Task Sequence для установки Windows XP

В консоли управления разворачиваем Site Database->Computer Management->Software Distribution->Operating System Dployment->Task Sequence щелкаем на этой ветке правой кнопкой мышки и в выпадающем меню выбираем Task Sequence.

Создаваемое задание – Build and Capture operating system image, затем выбираем загрузочный образ в зависимости от архитектуры целевой машины.

Затем выбираем собственно образ инсталляционных файлов разворачиваемой операционной системы, указываем ключ и если необходимо – пароль администратора. Также указываем, нужно ли включать целевой компьютер в домен и если нужно, то необходимый OU и учетную запись пользователя который будет использоваться при добавлении компьютера в домен. Также указываем куда же будет сохраняться образ.

Создание Advetisement

В консоли управления разворачиваем Site Database->Computer Management->Software Distribution->Operating System Deployment->Computer Association. Щелкаем правой кнопкой мышки на только что созданном Task sequence и в контекстном меню выбираем Advertise

Назначать такой Advetisement на коллекцию All systems в рабочей системе (да и в тестовой тоже) не очень хорошая идея, это может привести к уничтожению всех данных на всех компьютерах (SCCM сервер входит в число этих всех компьютеров)

Крайне рекомендую сделать отдельную коллекцию, в качестве члена этой коллекции добавить компьютер, который чуть раньше был импортирован в коллекцию All Systems и назначать Advetisement уже на эту коллекцию

Теперь включаем целевой компьютер, в BIOS выбираем грузиться по сети. Если все сделано правильно, любуемся процессом установки WIndows XP