вторник, 7 февраля 2023 г.

Управление драйверами. Импорт дубликатов.

Процесс импорта драйверов и сборка Driver Packages - обычная задача, но нужно понимать, как происходит этот процесс:

  • Driver Source Path - сетевой путь, откуда мы будем импортировать драйверы
  • Driver Package Source - источник драйверов для Driver Package. Сюда будут скопированы драйверы после импорта
  • Driver Package - сам пакет драйверов, который мы распространяем на Distribution Points
Важный момент - когда мы делаем Import Driver, если такой драйвер уже существует, импортирован повторно он не будет, не смотря на то, что у нас по умолчанию установлена опция 
Specify the option for duplicate drivers - Import the driver and append a new category to the existing categories



При этом, когда мы начинаем собирать Driver Package, все драйверы, входящие в его состав, будут скопированы в Driver Package Source Path. 

Для наглядности процесса импорта драйверов и работы с дубликатами, создадим в Driver Source Path два каталога с драйверами:
  1. HP Envy - уникальный драйвер Intel Discrete LAN, общий драйвер Realtek Audio
  2. Lenovo P360 - уникальный драйвер Broadcom Discrete LAN, общий драйвер Realtek Audio 

Начинаем импортировать драйверы для HP Envy, задаем категорию по названию модели оборудования и сразу же создаем Driver Package:



Процесс импорта драйверов можно посмотреть в логе DriverCatalog.log. Посмотрим в него, когда начнем импортировать дубликаты драйверов.

Начинаем импортировать драйверы для Lenovo P360, используя опцию Import the driver and append a new category to the existing categories. Зададим для импортируемых драйверов категорию по модели.



Первые 3 драйвера у нас совпадают с теми, что мы уже импортировали для HP Envy. Посмотрим в лог DriverCatalog.log:


Мы видим, что часть драйверов уже содержится в каталоге. Давайте посмотрим в Driver Package Source:


Здесь мы видим дубликаты, видим, что размер совпадает. Теперь давайте посмотрим, что у нас в Driver Catalog со стороны Configuration Manager:



Здесь мы не видим дубликатов, видим только, что к дубликатам просто добавилась новая категория, а вот Driver Source Path у нас ссылается на HP Envy.

Давайте посмотрим в Driver Package:



Здесь мы видим ту же самую картину - Driver Source Path разный, хотя Driver Package Source у нас дубликаты содержит.

Откуда взялась идея всего этого разбора и дальнейших действий по импорту дубликатов? Так вышло, что на некоторых томах файлового сервера была включена Дедупликация, которая не поддерживается для Source в Configuration Manager. Исключения были сделаны некорректно, потому что для их добавления, сначала нужно было полностью отключить дедупликацию, дождаться обработки, сделать исключения и только потом включать дедупликацию обратно.

Так вышло, что часть драйверов находились "в дедупликации", а часть были полноценными. Собирался "кривой" пакет и на выходе мы получали не очень работоспособную ОС.

Наверное, корректным было бы наоборот избавляться из дубликатов, но "нет времени объяснять - деплой". 

Для большого количества нового оборудования нужно было разместить новые драйверы в Driver Source Path на томе без дедупликации, Driver Package Source так же разместить на томе без дедупликации, а так как драйверы имели дубликаты, необходимы было принудительно импортировать их в Driver Catalog.

Здесь важно понимать, как Configuration Manager определяет, что драйвер является дубликатом: Configuration Manager считает "master hash" для каждого каталога, если такой же уже есть - это дубликат. Все, что нам нужно сделать - это, например, добавить в каждый каталог драйверов пустой/файл с одним символом и мы получим уникальный "master hash":






Импортируем из нового Driver Source Path те же самые драйверы:


Все импортируемые драйверы уже есть в Driver Catalog, но для Configuration Manager дубликатами они теперь не являются.

BAT-скрипт для создания файлов в подкаталогах с точкой внутри:
@ECHO OFF
for /f "tokens=*" %%G IN ('dir /ad /b /s') DO (
echo . > "%%G\%~n0.txt"
)
Файл будет создаваться по имени BAT-скрипта.