+7 (812) 325 84 00

+7 (499) 322 07 96

Особенности диагностики процесса SCCM 2012 R2 Client Push Install

Недавно я разворачивал систему SCCM 2012 R2 в достаточно крупной организации. В числе прочего, столкнулся с довольно неочевидной проблемой при распространении клиентов Configuration Manager методом Push Install.

Операция Client Push Install, в общем случае, работает одновременно для всех клиентов в области обнаружения в сайте; есть возможность только отдельно выбрать, ставить ли клиента на машины с ОС рабочих станций, серверов, и с установленными ролями системы сайта SCCM (а также указать, выполнять ли установку на DC). Для детального контроля списка целевых машин предпочтительнее использовать другие варианты установки клиента (через групповые политики, например).

В данном случае SCCM клиентов нужно было ставить везде и сразу, поэтому вариант Push Install подходил. Однако, из-за особенностей работы в конкретном окружении, часть пользовательских машин была недоступна достаточно продолжительное время. По умолчанию, SCCM повторяет попытку автоматической push-инсталляции раз в час в течении недели – см. пост на форуме  https://social.technet.microsoft.com/Forums/en-US/cf3a6a7a-01a2-4425-8032-2639e25c0e81/manually-force-a-client-installation-retry?forum=configmanagerdeployment. В логе сервера сайта ccm.log попытки push-установки для недоступных машин протоколируются вот так (это пример):

---> Trying the 'best-shot' account which worked for previous CCRs (index = 0x0)~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:30.403-180><thread=4288 (0x10C0)>
---> Attempting to connect to administrative share '\\SPBM115-WSKHALE\admin$' using account 'ETALON\svc_SCCMInstall'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:30.403-180><thread=4288 (0x10C0)>
---> WNetAddConnection2 failed (LOGON32_LOGON_NEW_CREDENTIALS) using account ETALON\svc_SCCMInstall (00000035)  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:34.520-180><thread=4912 (0x1330)>
---> The device MSKTSV-WS11014N does not exist on the network. Giving up~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:34.521-180><thread=4912 (0x1330)>
---> Trying the 'best-shot' account which worked for previous CCRs (index = 0x0)~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:34.522-180><thread=4912 (0x1330)>
---> Attempting to connect to administrative share '\\MSKTSV-WS11014N.etalon.local\admin$' using account 'ETALON\svc_SCCMInstall'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:34.522-180><thread=4912 (0x1330)>
---> WNetAddConnection2 failed (LOGON32_LOGON_NEW_CREDENTIALS) using account ETALON\svc_SCCMInstall (00000035)  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:36.653-180><thread=5152 (0x1420)>
---> The device T430SI-ALEXANDR does not exist on the network. Giving up~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:36.654-180><thread=5152 (0x1420)>
---> Trying the 'best-shot' account which worked for previous CCRs (index = 0x0)~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:36.655-180><thread=5152 (0x1420)>
---> Attempting to connect to administrative share '\\T430si-Alexandr.etalon.local\admin$' using account 'ETALON\svc_SCCMInstall'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:36.655-180><thread=5152 (0x1420)>
---> WNetAddConnection2 failed (LOGON32_LOGON_NEW_CREDENTIALS) using account ETALON\svc_SCCMInstall (00000035)  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:42.989-180><thread=6500 (0x1964)>
---> The device SPBO123-WS21502 does not exist on the network. Giving up~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:42.991-180><thread=6500 (0x1964)>
---> Trying the 'best-shot' account which worked for previous CCRs (index = 0x0)~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:42.991-180><thread=6500 (0x1964)>
---> Attempting to connect to administrative share '\\SPBO123-WS21502.etalon.local\admin$' using account 'ETALON\svc_SCCMInstall'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:42.991-180><thread=6500 (0x1964)>
---> WNetAddConnection2 failed (LOGON32_LOGON_NEW_CREDENTIALS) using account ETALON\svc_SCCMInstall (00000035)  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:43.340-180><thread=12752 (0x31D0)>
---> The device SPBM115-WS40101 does not exist on the network. Giving up~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:43.341-180><thread=12752 (0x31D0)>
---> Trying the 'best-shot' account which worked for previous CCRs (index = 0x0)~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:43.342-180><thread=12752 (0x31D0)>
---> Attempting to connect to administrative share '\\spbm115-ws40101.etalon.local\admin$' using account 'ETALON\svc_SCCMInstall'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:43.342-180><thread=12752 (0x31D0)>
---> WNetAddConnection2 failed (LOGON32_LOGON_NEW_CREDENTIALS) using account ETALON\svc_SCCMInstall (00000035)  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:47.219-180><thread=8644 (0x21C4)>
---> The device SPBHDQ-WS31504 does not exist on the network. Giving up~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:47.220-180><thread=8644 (0x21C4)>
---> Trying the 'best-shot' account which worked for previous CCRs (index = 0x0)~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:47.221-180><thread=8644 (0x21C4)>
---> Attempting to connect to administrative share '\\spbhdq-ws31504.etalon.local\admin$' using account 'ETALON\svc_SCCMInstall'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:47.221-180><thread=8644 (0x21C4)>
---> WNetAddConnection2 failed (LOGON32_LOGON_NEW_CREDENTIALS) using account ETALON\svc_SCCMInstall (00000035)  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:49.330-180><thread=2804 (0xAF4)>
---> The device SPBN85-WS1006 does not exist on the network. Giving up~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:49.331-180><thread=2804 (0xAF4)>
---> Trying the 'best-shot' account which worked for previous CCRs (index = 0x0)~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:49.332-180><thread=2804 (0xAF4)>
---> Attempting to connect to administrative share '\\spbn85-ws1006.etalon.local\admin$' using account 'ETALON\svc_SCCMInstall'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:13:49.332-180><thread=2804 (0xAF4)>
---> WNetAddConnection2 failed (LOGON32_LOGON_NEW_CREDENTIALS) using account ETALON\svc_SCCMInstall (00000035)  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:14:00.767-180><thread=13204 (0x3394)>
---> The device SPBM115-WSSAV does not exist on the network. Giving up~  $$<SMS_CLIENT_CONFIG_MANAGER><10-11-2015 21:14:00.768-180><thread=13204 (0x3394)>

Операцию Client Push Install можно форсировать вручную с сервера SCCM, выполняющего установку, путем генерации запроса CCR с помощью утилиты ClientPushGenerator.exe (лежит в папке установки SCCM по пути \AdminConsole\bin\ClientpushGenerator.exe). Соответствующая процедура описана здесь:
Запрос к БД SCCM из первого поста отображает время и код завершения последней операции установки:

Fig1.jpg

Последняя попытка инсталляции на 10-THINK (пример недоступной в сети машины) завершилась с ошибкой 53, это стандартный код для “Network path not found”. CCR-запрос пролежал в очереди положенное время (неделю), и истек по таймауту.

Итак, генерируем новую CCR-запись для машины 10-THINK, как описано в статье. В логе ccm.log видим следующее:

Successfully retrieved information for machine 10-THINK fr om DB $$
Execute query exec [sp_CP_GetPushRequestMachineIP] 2097152894~ $$
Execute query exec [sp_CP_GetPushRequestMachineResource] 2097152894~ $$
Execute query exec [sp_CP_GetPushMachineName] 2097152894~ $$
Received request: "2097152894" for machine name: "10-THINK" on queue: "Incoming". $$
Request "2097152894" for machine "10-THINK" doesn't exist in DB or has expired and will not be stored in queue "Processing" . $$
STATMSG: ID=3011 SEV=E LEV=M SOURCE="SMS Server" COMP="SMS_CLIENT_CONFIG_MANAGER" SYS=SPbv-srvSCCM.etalon.local SITE=S01 PID=17128 TID=7108 GMTDATE=Ср окт 21 09:31:07.672 2015 ISTR0="10-THINK" ISTR1="162" ISTR2="168" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=0 $$
Deleted request "2097152894", machine name "10-THINK" $$
То есть, сходу оно не заработало. Выяснилось, что CCR-запросы, генерируемые утилитой ClientPushInstall. exe, игнорируются при наличии для клиента истекшей записи в таблице ClientPushMachine _ G. Поэтому, перед выдачей CCR-запроса, таблицу надо подчистить – или дождаться стандартной операции очистки при обслуживании БД SCCM, но таймаут ротации таких записей достаточно долгий.
Поэтому, делаем такой запрос к SCCM базе (в моем случае, для клиента 10-THINK):

DELETE FR OM ClientPushMachine_G WH ERE Name like '10-THINK'

См. статью “Remove Client Push records in Configuration Manager 2012”, http://systemcenterme.com/remove-client-push-records-in-sccm-2012/.
И уже после этого повторно генерируем CCR-запись с помощью Client Push Generator. Теперь в логе ccm. log видим следующее:

Received request: "2097152894" for machine name: "10-think" on queue: "Incoming".  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:41.830-180><thread=7108 (0x1BC4)>
Stored request "2097152894", machine name "10-think", in queue "Processing".  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:41.831-180><thread=7108 (0x1BC4)>
Execute query exec [sp_CP_SetPushRequestMachineStatus] 2097152894, 1~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:41.845-180><thread=7108 (0x1BC4)>
----- Started a new CCR processing thread. Thread ID is 0x2100. There are now 1 processing threads  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.849-180><thread=7108 (0x1BC4)>
Submitted request successfully  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.850-180><thread=7108 (0x1BC4)>
Getting a new request from queue "Incoming" after 100 millisecond delay.  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.850-180><thread=7108 (0x1BC4)>
Waiting for change in directory "C:\Program Files\Microsoft Configuration Manager\inboxes\ccr.box" for queue "Incoming", (30 minute backup timeout).  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.851-180><thread=7108 (0x1BC4)>
======>Begin Processing request: "2097152894", machine name: "10-think"  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.850-180><thread=8448 (0x2100)>
Execute query exec [sp_IsMPAvailable] N'S01'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.873-180><thread=8448 (0x2100)>
---> Trying each entry in the SMS Client Remote Installation account list~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.874-180><thread=8448 (0x2100)>
---> Attempting to connect to administrative share '\\10-THINK\admin$' using account 'ETALON\admin'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.875-180><thread=8448 (0x2100)>
---> Connected to administrative share on machine 10-THINK using account 'ETALON\admin'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.953-180><thread=8448 (0x2100)>
---> Attempting to make IPC connection to share < \\10-THINK\IPC$ > ~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.953-180><thread=8448 (0x2100)>
---> Searching for SMSClientInstall.* under '\\10-THINK\admin$\'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:43.957-180><thread=8448 (0x2100)>
---> System OS version string "6.1.7601" converted to 6,10  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.464-180><thread=8448 (0x2100)>
---> Unable to connect to WMI (root\ccm) on remote machine "10-THINK", error = 0x8004100e.  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.490-180><thread=8448 (0x2100)>
~'PushClientEvenIfDC' flag is set. Skipping DC checks.  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.490-180><thread=8448 (0x2100)>
---> Creating \ VerifyingCopying existence of destination directory  \\10-THINK\admin$\ccmsetup.~   $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.492-180><thread=8448 (0x2100)>
---> Copying client files to  \\10-THINK\admin$\ccmsetup.~   $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.495-180><thread=8448 (0x2100)>
---> Copying file "C:\Program Files\Microsoft Configuration Manager\bin\I386\MobileClient.tcf" to "MobileClient.tcf"  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.499-180><thread=8448 (0x2100)>
---> Copying file "C:\Program Files\Microsoft Configuration Manager\bin\I386\ccmsetup.exe" to "ccmsetup.exe"  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.520-180><thread=8448 (0x2100)>
---> ForceReinstall flag is set to true  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.680-180><thread=8448 (0x2100)>
---> Created service "ccmsetup" on machine "10-THINK".  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:44.694-180><thread=8448 (0x2100)>
---> Started service "ccmsetup" on machine "10-THINK".  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:45.187-180><thread=8448 (0x2100)>
---> Deleting SMS Client Install Lock File '\\10-THINK\admin$\SMSClientInstall.S01'~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:45.189-180><thread=8448 (0x2100)>
Execute query exec [sp_CP_SetLastErrorCode] 2097152894, 0~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:45.236-180><thread=8448 (0x2100)>
---> Completed request "2097152894", machine name "10-think".  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:45.239-180><thread=8448 (0x2100)>
Deleted request "2097152894", machine name "10-think"  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:45.239-180><thread=8448 (0x2100)>
Execute query exec [sp_CP_SetPushRequestMachineStatus] 2097152894, 4~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:45.241-180><thread=8448 (0x2100)>
Execute query exec [sp_CP_SetLatest] 2097152894, N'10/21/2015 10:21:45', 1~  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:45.244-180><thread=8448 (0x2100)>
<======End request: "2097152894", machine name: "10-think".  $$<SMS_CLIENT_CONFIG_MANAGER><10-21-2015 13:21:45.246-180><thread=8448 (0x2100)>

Begin Processing request – это именно то, что нам надо, при доступности сетевого ресурса \\10-THINK\Admin$ для учетной записи инсталляции процесс запускается сразу. Клиент через положенное время встал:

Fig2.jpg

Проблема здесь в том, что для каждого такого клиента просроченные записи нужно удалять вручную. Можно, в принципе, попытаться придумать какой-нибудь хитрый запрос к базе данных для удаления только нужных клиентов по коду завершения предыдущей операции CCR. И, конечно, надо соблюдать осторожность при прямой работе с БД Configuration Manager!

А в остальном - методика рабочая.