В процессе перехода на Windows 7 всё чаще стали сталкиваться с проблемой невозможности развертывания OC с SCCM 2007 R2 из-за существующих совпадений Universal Unique Identifier (UUID) материнских плат. Ранее уже рассматривался один из возможных вариантов решения этой проблемы в заметке SCCM & Double UUID. Но рассмотренный метод может подходить далеко не для всех компьютеров, так как не во всех случаях имеется возможность штатной замены UUID, тем более учитывая тот факт, что во многих ИТ инфраструктурах не так уж и редко можно встретить небрендовые сборки ПК. В статье ITBand.ru - Dublicate SMBIOS GUID приводится пример SQL запроса для построения отчёта SCCM, который поможет нам оценить "масштабы бедствия" среди существующих у нас клиентов Configuration Manager.
То есть чтобы получить развёрнутую информацию о том какие UUID встречаются в базе данных SCCM более 1 раза и в каком количестве создадим отчет с запросом:
select rs.Name0, rs.SMBIOS_GUID0, cnt
from dbo.v_R_System as RS
inner join ( select SMBIOS_GUID0, count (*) as cnt
from dbo.v_R_System where SMBIOS_GUID0 is not NULL
group by SMBIOS_GUID0 having count(Name0) > 1 ) as q
on rs.SMBIOS_GUID0 = q.SMBIOS_GUID0
order by cnt
Результат вывода будет выглядеть примерно так:
Для получения сводного количества вариантов совпадающих UUID немного модифицируем запрос:
select distinct rs.SMBIOS_GUID0, cnt
from dbo.v_R_System as RS
inner join ( select SMBIOS_GUID0, count (*) as cnt
from dbo.v_R_System where SMBIOS_GUID0 is not NULL
group by SMBIOS_GUID0 having count(Name0) > 1 ) as q
on rs.SMBIOS_GUID0 = q.SMBIOS_GUID0
order by cnt
Теперь видно, что например в нашем "зверинце" 37 разных вариантов UUID которые попадаются на более чем одном компьютере.
Учитывая тот факт, что нереально исправить ситуацию по совпадению в полной мере, было решено прибегнуть к методу "обмана" SCCM.
Решение предлагаемое в заметке Idan at myITforum.com - How to enable OSD with duplicate UUID in Configuration Manager было применено, но в ситуации когда установка ОС производится с использованием загрузочного носителя (не используется PXE) – безрезультатно. Возможно, что в случае с PXE этот метод и прокатил бы, но я если честно его в связке с PXE не проверял, так как такой режим установки у меня исключен изначально из-за того, что достаточно больше количество компьютеров имеют сетевые адаптеры не поддерживающие эту технологию.
В случае установки с загрузочного носителя решено было воспользоваться методом, описанным в комментарии от Александр Sh, который и помог избежать проблемы в нашей ситуации. Далее опишу этот метод по порядку действий.
Начнём с того что нам нужно будет сгенерировать некое уникальное значение UUID. Сделаем это с помощью PowerShell командой:
[guid]::NewGuid().ToString().ToUpper()
Запишем полученное значение, например в нашем случае 3A2F1978-584C-4B29-9BD1-EF737880C3AB, так как оно нам понадобится дальше.
Откроем SQL Server Management Studio, подключимся к базе данных SCCM и найдём хранимую процедуру NBS_LookupDevice (Programmability > Stored Procedures > dbo.NBS_LookupDevice):
В код процедуры добавим конструкцию подмены переменной @SMBIOS_GUID на сгенерированное нами ранее уникальное значение:
IF @SMBIOS_GUID IN ('00000000-0000-0000-0000-000000000000',
'FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF',
'03000200-0400-0500-0006-000700080009',
<Здесь перечисляем все дублирующиеся варианты UUID> ,'FEFEFEFE-FEFE-FEFE-FEFE-FEFEFEFEFEFE')
BEGIN
SET @SMBIOS_GUID ='3A2F1978-584C-4B29-9BD1-EF737880C3AB';
END
Полученный ранее из отчёта список неуникальных UUID перечисляем через запятую и заключаем каждое значение в кавычки.
Готовый блок подмены вставляем в начало процедуры как показано в примере:
После внесённых изменений выполним Execute и попробуем снова запустить процедуру развертывания клиента с дублирующимся UUID. После успешной установки ОС мы сможем убедиться в том, что клиент SCCM зарегистрировался в БД со своим реальным "кривым" UUID:
Стоит помнить, что после применений обновлений к Configuration Manager, возможно код хранимой процедуры будет возвращён в исходное состояние, и нам снова потребуется его корректировка.
Обратная ссылка: SCCM 2012 – Возвращаясь к проблеме Double UUID « ИТ Блог Алексея Максимова /
Обратная ссылка: SCCM 2012 — Возвращаясь к проблеме Double UUID | Блог IT-KB /