Развертывание Windows 7. Часть 22. Массовое заполнение базы данных MDT с помощью PowerShell

Опубликовано: 21 Марта, 2023

  • Развертывание Windows 7. Часть 1. Усовершенствования Windows AIK 2.0
  • Развертывание Windows 7. Часть 2. Использование DISM
  • Развертывание Windows 7. Часть 3. Знакомство с MAP 4.0
  • Развертывание Windows 7. Часть 4. Использование MAP 4.0
  • Развертывание Windows 7. Часть 5. Усовершенствования MDT 2010
  • Развертывание Windows 7. Часть 6. Легкое прикосновение с помощью MDT 2010
  • Развертывание Windows 7. Часть 7. Автоматическое развертывание LTI
  • Развертывание Windows 7. Часть 8. Знакомство с файлами конфигурации LTI
  • Развертывание Windows 7. Часть 9. Развертывание 32-разрядной и 64-разрядной версии Windows
  • Развертывание Windows 7. Часть 10. Создание и развертывание образа эталонного компьютера
  • Развертывание Windows 7. Часть 11. Запись существующей установки
  • Развертывание Windows 7. Часть 12. Планирование совместимости приложений
  • Развертывание Windows 7. Часть 13. Миграция вручную с Windows XP на Windows 7
  • Развертывание Windows 7. Часть 14. Автоматический переход с XP
  • Развертывание Windows 7. Часть 15. Настройка базы данных MDT
  • Развертывание Windows 7. Часть 24. Управление драйверами. Проблемы и подходы
  • Развертывание Windows 7. Часть 25. Управление драйверами. Профили выбора
  • Развертывание Windows 7. Часть 26. Управление драйверами — по производителям и моделям
  • Развертывание Windows 7. Часть 27. Управление драйверами. Советы и рекомендации
  • Развертывание Windows 7. Часть 28. Управление обновлениями программного обеспечения
  • Развертывание Windows 7. Часть 29. Завершение инфраструктуры развертывания LTI

Совет:
Дополнительную информацию об автоматизации развертывания LTI можно найти в наборе ресурсов Windows 7 от Microsoft Press. Я являюсь ведущим автором этого комплекта ресурсов, а также поддерживаю неофициальный сайт поддержки комплекта ресурсов Windows 7 с ответами на вопросы читателей, а также ссылками на последние ресурсы по развертыванию, администрированию и устранению неполадок Windows 7.

В предыдущих статьях этой серии мы рассмотрели, как настроить и использовать базу данных MDT для развертываний Lite Touch. Например, в статье 16 мы видели, как вы можете использовать Deployment Workbench для добавления новых целевых компьютеров в базу данных, чтобы вы могли настроить развертывание Windows 7 на основе MAC-адреса или UUID каждого целевого компьютера. Однако делать это вручную с помощью Deployment Workbench утомительно — что, если у вас есть десятки или сотни компьютеров, которые вы хотите добавить в базу данных?

Вот где Windows PowerShell может быть полезен, поскольку он позволяет писать сценарии для автоматизации утомительных административных задач. Хотя MDT 2010 теперь включает встроенную поддержку PowerShell, он не включает командлеты для управления базой данных MDT. Однако Майкл Нихаус, разработчик MDT, создал отдельный модуль PowerShell, который можно использовать для добавления поддержки PowerShell для управления базой данных MDT. В этой статье показано, как импортировать этот модуль и использовать PowerShell для получения электронной таблицы с информацией о целевом компьютере и массового импорта этой информации в базу данных MDT в качестве новых элементов компьютера.

Примечание:
В этой статье предполагается, что вы новичок в PowerShell с минимальным опытом написания сценариев PowerShell, но с небольшим опытом программирования в других областях.

Установка модуля PowerShell для MDT

Начните с загрузки сжатого файла модуля PowerShell с именем MDTDB.zip из этой записи в блоге Майкла Нихауса или по этой прямой ссылке. Щелкните правой кнопкой мыши загруженный файл, выберите «Свойства» и нажмите «Разблокировать». Затем разархивируйте файл сценария MDTDB.psm1 и скопируйте его в папку (здесь предполагается, что это C:Scripts) на вашем сервере MDT.

Теперь откройте командную оболочку PowerShell и введите Get-ExecutionPolicy, чтобы просмотреть текущую политику выполнения на вашем сервере (дополнительную информацию см. здесь):

Изображение 19595
Рисунок 1: Просмотр текущей политики выполнения

Если текущая политика выполнения ограничена, сценарий MDTDB.psm1 не будет выполняться, поэтому используйте команду Set-ExecutionPolicy Unrestricted, чтобы изменить политику выполнения на Unrestricted следующим образом:

Изображение 19596
Рисунок 2: Изменение политики выполнения на Unrestricted.

Теперь введите Import-Module –name C:ScriptsMDTDB.psm1, чтобы добавить модуль MDT PowerShell в текущий сеанс PowerShell, как показано здесь:

Изображение 19597
Рисунок 3: Импорт модуля MDT PowerShell.

Обратите внимание, что в результате выполнения команды Import-Module перечислены все новые командлеты PowerShell, которые теперь доступны для управления базой данных MDT. Например, на рисунке выше вы можете увидеть командлет New-MDTComputer, который мы будем использовать позже в этой статье для добавления новых компьютеров в базу данных.

Чтобы убедиться, что модуль был импортирован, введите Get-Module, как показано здесь:

Изображение 19598
Рисунок 4: Проверка того, что модуль был импортирован

Подключение к базе данных MDT

Теперь нам нужно подключить нашу сессию PowerShell к базе данных MDT. Для этого воспользуемся командлетом Connect-MDTDatabase. Чтобы просмотреть синтаксис этого командлета, введите Get-Help Connect-MDTDatabase, как показано здесь:

Изображение 19599
Рисунок 5: Просмотр синтаксиса для Connect-MDTDatabase

Кончик:
Вы также можете узнать больше об использовании этого командлета из записи в блоге Майкла.

Чтобы подключиться к базе данных MDT с именем MDT в экземпляре SQL Server с именем SQLEXPRESS на сервере MDT с именем SEA-MDT-01, введите следующую команду:

Connect-MDTDatabase – sqlServer SEA-MDT-01 – экземпляр SQLEXPRESS – база данных MDT

Изображение 19600
Рисунок 6: Подключение к базе данных MDT

Работа с элементами компьютера

Давайте начнем с того, что посмотрим, есть ли уже какие-либо элементы компьютеров в базе данных MDT. Для этого мы собираемся использовать командлет Get-MDTComputer, поэтому давайте воспользуемся Get-Help, чтобы просмотреть синтаксис этого командлета:

Изображение 19601
Рисунок 7: Просмотр синтаксиса для Get-MDTComputer

Чтобы перечислить все существующие элементы компьютеров в базе данных, просто введите Get-MDTComputer следующим образом:

Изображение 19602
Рисунок 8: Список компьютеров в базе данных MDT

Командлет Get-MDTComputer показывает, что в базе данных есть один элемент компьютера и что этот элемент компьютера имеет MAC-адрес EE:EE:EE:FF:FF:FF и идентификационный номер 2. Идентификационный номер является ключевым полем для компьютера. Предметы. Другими словами, каждый элемент компьютера в базе данных будет иметь уникальный идентификационный номер.

Если мы откроем Deployment Workbench, мы увидим этот элемент компьютера:

Изображение 19603
Рисунок 9: Просмотр элемента компьютера с помощью Workbench

Мы могли бы удалить этот элемент компьютера с помощью Workbench, но давайте сделаем это с помощью PowerShell. При необходимости введите Get-Help Remove-MDTComputer, чтобы отобразить синтаксис для удаления элементов компьютера. затем введите Remove-MDTComputer –id 2 –verbose, чтобы удалить элемент компьютера и отобразить подробные сведения об операции:

Изображение 19604
Рисунок 10: Удаление элемента компьютера из базы данных

Импорт компьютеров в базу данных

Теперь давайте массово импортируем несколько компьютеров в базу данных. Начните с создания электронной таблицы Excel с различными столбцами для имени, UUID, MAC-адреса и других свойств этих компьютеров. Каждая строка электронной таблицы будет соответствовать одному компьютеру. Для этого пошагового руководства я создал электронную таблицу нескольких компьютеров в своей лаборатории:

Изображение 19605
Рисунок 11: Создайте электронную таблицу для ваших целевых компьютеров

Теперь экспортируйте эту электронную таблицу в виде текстового файла с разделителями-запятыми (CSV) (с именем C:Datamachines.txt), который вы можете открыть в Блокноте для просмотра:

Изображение 19606
Рисунок 12: CSV-файл для целевых компьютеров

Теперь используйте команду Import-Csv, чтобы импортировать файл CSV и назначить его переменной $machines следующим образом:

$machines = Import-CSV C:Datamachines.txt

Изображение 19607
Рисунок 13: Импорт CSV-файла в переменную

При вводе $machines отображается импортированная информация, которая хранится в виде массива:

Изображение 19608
Рис. 14. Информация о компьютере хранится в виде массива

Вы можете ввести $machines.count, чтобы отобразить количество элементов в этом массиве:

Изображение 19609
Рис. 15. Массив состоит из 3 элементов, по одному для каждого компьютера.

Чтобы отобразить первый элемент массива, вы можете ввести $machines[0] следующим образом:

Изображение 19610
Рисунок 16: Отображение первого элемента массива

Как видно из рисунка выше, первый элемент массива содержит информацию о первом компьютере. Чтобы отобразить только имя этого компьютера, введите $machines[0].name следующим образом:

Изображение 19611
Рисунок 17: Отображение имени первого компьютера

Добавление импортированных компьютеров в базу данных

Теперь, когда мы немного знаем об управлении массивами, мы готовы импортировать информацию, хранящуюся в переменной массива $machines, в нашу базу данных MDT. Для этого мы будем использовать командлет New-MDTComputer, поэтому давайте покажем синтаксис этого командлета:

Изображение 19612
Рисунок 18: Посмотрите синтаксис для New-MDTComputer

Помните из статьи 16, что элементы компьютеров должны быть однозначно идентифицированы в базе данных с использованием одного (или нескольких) из следующих полей:

  • Универсальный уникальный идентификатор (UUID)
  • Тег объекта
  • Серийный номер
  • MAC-адрес

Давайте добавим элемент компьютера для первого компьютера в нашу электронную таблицу, используя его MAC-адрес в качестве идентификатора. Для этого набираем следующую команду:

New-MDTComputer –macAddress $machines[0].mac –settings @{OSInstall='YES'}

Изображение 19613
Рисунок 19: Добавление первого компьютера в базу данных с использованием его MAC-адреса в качестве идентификатора

Закройте и снова откройте Workbench, чтобы обновить его, и вы должны увидеть новый элемент компьютера:

Изображение 19614
Рисунок 20: Новый элемент компьютера добавлен в базу данных

Если дважды щелкнуть этот элемент компьютера, можно отобразить его свойства:

Изображение 19615
Рисунок 21: Свойства нового элемента компьютера

Выбор вкладки Details показывает, что для свойства OSinstall установлено значение YES, как и ожидалось:

Изображение 19616
Рисунок 22: Подробные свойства нового элемента компьютера

Однако обратите внимание на приведенный выше рисунок, что свойство OSDComputerName нового элемента компьютера не имеет значения. Свойство OSDComptuerName указывает имя, которое вы хотите, чтобы MDT присвоила целевому компьютеру, и если вы вернетесь к рисунку 11, вы увидите, что мы хотели, чтобы это свойство было установлено на DESK-A для этого конкретного компьютера.

Давайте посмотрим, как добавить новый компьютер в базу данных, указав также имя компьютера. Чтобы показать, как это сделать, давайте добавим элемент компьютера для второго компьютера в нашу электронную таблицу, используя его MAC-адрес в качестве идентификатора, а также указав его имя (которое, как вы можете видеть на предыдущем рисунке 11, должно быть DESK-B). Для этого набираем следующую команду:

New-MDTComputer –macAddress $machines[1].mac –settings @{OSInstall='YES';OSDComputerName=$machines[1].name}

Изображение 19617
Рисунок 23: Добавление второго компьютера в базу данных с использованием его MAC-адреса в качестве идентификатора и указанием имени компьютера

Если вы закроете и снова откроете Workbench, откроете свойства нового компьютера и выберете вкладку Details, вы увидите, что на этот раз свойству OSDComputerName присвоено ожидаемое значение DESK-B:

Изображение 19618
Рисунок 24: Подробные свойства нового элемента компьютера

Давайте попробуем еще один пример и добавим элемент компьютера для третьего компьютера в нашу электронную таблицу, используя его MAC-адрес в качестве идентификатора, а также указав имя компьютера, название организации и полное имя пользователя. Для этого мы введем одну команду PowerShell, но продолжим ее в несколько строк, чтобы сделать ее более читаемой:

New-MDTComputer –macAddress $machines[2].mac –settings @{

ОСУстановить='ДА';

OSDComputerName=$machines[2].name;

FullName='Майкл Аллен';

OrgName='Contoso Ltd.'}

Изображение 19619
Рисунок 25:

Добавление третьего компьютера в базу данных с указанием нескольких свойств

Обратите внимание, что в PowerShell вам не нужно использовать какой-либо специальный символ продолжения строки, если команда переходит через массив, указанный фигурными скобками.

Закройте и снова откройте Workbench, откройте свойства нового компьютера и выберите вкладку «Сведения», чтобы увидеть, что ожидаемые свойства настроены:

Изображение 19620
Рисунок 26: Подробные свойства нового элемента компьютера

Массовое создание элементов компьютеров в базе данных

Теперь мы знаем, как с помощью одной команды PowerShell создать новый элемент компьютера в базе данных MDT и настроить различные свойства этого элемента. Теперь давайте посмотрим, как мы можем использовать сценарий для автоматизации этого процесса, чтобы мы могли массово создавать множество компьютеров в базе данных за один шаг.

Во-первых, вместо того, чтобы вводить отдельные команды для создания каждого компьютера в базе данных, давайте воспользуемся циклом For для перебора элементов массива $machines следующим образом:

Для ($i=1; $i -le $machines.count; $i++)
{
New-MDTComputer -macAddress $machines[$i-1].mac -settings @{ OSInstall='YES'; OSDComputerName=$machines[$i-1].name;}
}



Изображение 19621
Рисунок 27: Использование цикла For для добавления компьютеров в базу данных

Обратите внимание, что цикл не выполняется до тех пор, пока вы не наберете закрывающую фигурную скобку — вам не нужно использовать символы продолжения строки, как в VBScript.

Результат выполнения этой команды можно увидеть, открыв Workbench:

Изображение 19622
Рис. 28. Три элемента компьютеров созданы с помощью одной команды

Теперь превратим все это в скрипт, который делает следующее:

  • Устанавливает модуль MDT PowerShell.
  • Подключается к базе данных MDT
  • Импортирует файл CSV с информацией о целевом компьютере.
  • Создает элементы компьютеров в базе данных, включая имена компьютеров и название организации Contoso Ltd.

Для этого введите следующий скрипт PowerShell в Блокнот:

Import-Module – имя C:ScriptsMDTDB.psm1

Connect-MDTDatabase – sqlServer SEA-MDT-01 – экземпляр SQLEXPRESS – база данных MDT

$machines = Import-Csv C;Datamachines.txt

Для ($i=1; $i -le $machines.count; $i++)

{

New-MDTComputer -macAddress $machines[$i-1].mac -settings @{

ОСУстановить='ДА';

OSDComputerName=$machines[$i-1].name;

OrgName='Contoso Ltd.'

}

}

Теперь сохраните этот текстовый файл как Create.ps1, поскольку сценарии PowerShell должны иметь расширение файла.ps1. Откройте Workbench и удалите все существующие элементы компьютеров в базе данных, затем закройте Workbench.

Теперь перейдите к файлу Create.ps1, щелкните его правой кнопкой мыши и выберите «Запустить с PowerShell». Командная оболочка PowerShell отобразится на мгновение, а затем закроется. В качестве альтернативы двойному щелчку файла.ps1 вы можете открыть командную оболочку PowerShell, перейти в каталог, в котором находится файл Create.ps1, и ввести Create.ps1 для запуска сценария.

Теперь откройте Workbench, и вы должны увидеть новые элементы компьютера. Мы достигли нашей цели, заполнив базу данных MDT несколькими компьютерными элементами за один шаг.

Вот вам бонус. Администраторы часто хотят назвать компьютеры, используя какое-то стандартное соглашение об именах, и, скажем, мы хотим назвать эти три компьютера SEA-CLI-001, SEA-CLI-002 и SEA-CLI-003 вместо DESK-A, DESK-B и DESK. -Э. Мы можем сделать это, изменив приведенный выше скрипт с помощью небольшого количества причудливых манипуляций со строками следующим образом:

Import-Module – имя C:ScriptsMDTDB.psm1

Connect-MDTDatabase – sqlServer SEA-MDT-01 – экземпляр SQLEXPRESS – база данных MDT

$machines = Import-Csv C;Datamachines.txt

Для ($i=1; $i -le $machines.count; $i++)

{
$n = "{0:D3}" -f $i
New-MDTComputer -macAddress $machines[$i-1].mac -settings @{
ОСУстановить='ДА';
OSDComputerName='SEA-CLI-' + $n
OrgName='Contoso Ltd.'
}
}







Сохраните этот сценарий как Create2.ps1, а затем запустите его. Когда вы примеряете вкладку «Сведения» свойств элементов компьютеров, созданных сценарием, вы увидите, что компьютеры названы в соответствии с указанным соглашением об именовании:

Изображение 19623
Рис. 29. Создание элементов компьютеров с использованием соглашения об именах

Дополнительные ресурсы

Существует множество хороших ресурсов по PowerShell, но новичкам я рекомендую ознакомиться с главой 13 комплекта ресурсов Windows 7, в которой есть хорошее вводное руководство, написанное Эдом Уилсоном, также известным как The Scripting Guy.

  • Развертывание Windows 7. Часть 1. Усовершенствования Windows AIK 2.0
  • Развертывание Windows 7. Часть 2. Использование DISM
  • Развертывание Windows 7. Часть 3. Знакомство с MAP 4.0
  • Развертывание Windows 7. Часть 4. Использование MAP 4.0
  • Развертывание Windows 7. Часть 5. Усовершенствования MDT 2010
  • Развертывание Windows 7. Часть 6. Легкое прикосновение с помощью MDT 2010
  • Развертывание Windows 7. Часть 7. Автоматическое развертывание LTI
  • Развертывание Windows 7. Часть 8. Знакомство с файлами конфигурации LTI
  • Развертывание Windows 7. Часть 9. Развертывание 32-разрядной и 64-разрядной версии Windows
  • Развертывание Windows 7. Часть 10. Создание и развертывание образа эталонного компьютера
  • Развертывание Windows 7. Часть 11. Запись существующей установки
  • Развертывание Windows 7. Часть 12. Планирование совместимости приложений
  • Развертывание Windows 7. Часть 13. Миграция вручную с Windows XP на Windows 7
  • Развертывание Windows 7. Часть 14. Автоматический переход с XP
  • Развертывание Windows 7. Часть 15. Настройка базы данных MDT
  • Развертывание Windows 7. Часть 23. Управление драйверами. Введение
  • Развертывание Windows 7. Часть 24. Управление драйверами. Проблемы и подходы
  • Развертывание Windows 7. Часть 25. Управление драйверами. Профили выбора
  • Развертывание Windows 7. Часть 26. Управление драйверами — по производителям и моделям
  • Развертывание Windows 7. Часть 27. Управление драйверами. Советы и рекомендации
  • Развертывание Windows 7. Часть 28. Управление обновлениями программного обеспечения
  • Развертывание Windows 7. Часть 29. Завершение инфраструктуры развертывания LTI