Развертывание Windows 7. Часть 22. Массовое заполнение базы данных MDT с помощью PowerShell
- Развертывание 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, чтобы просмотреть текущую политику выполнения на вашем сервере (дополнительную информацию см. здесь):
Рисунок 1: Просмотр текущей политики выполнения
Если текущая политика выполнения ограничена, сценарий MDTDB.psm1 не будет выполняться, поэтому используйте команду Set-ExecutionPolicy Unrestricted, чтобы изменить политику выполнения на Unrestricted следующим образом:
Рисунок 2: Изменение политики выполнения на Unrestricted.
Теперь введите Import-Module –name C:ScriptsMDTDB.psm1, чтобы добавить модуль MDT PowerShell в текущий сеанс PowerShell, как показано здесь:
Рисунок 3: Импорт модуля MDT PowerShell.
Обратите внимание, что в результате выполнения команды Import-Module перечислены все новые командлеты PowerShell, которые теперь доступны для управления базой данных MDT. Например, на рисунке выше вы можете увидеть командлет New-MDTComputer, который мы будем использовать позже в этой статье для добавления новых компьютеров в базу данных.
Чтобы убедиться, что модуль был импортирован, введите Get-Module, как показано здесь:
Рисунок 4: Проверка того, что модуль был импортирован
Подключение к базе данных MDT
Теперь нам нужно подключить нашу сессию PowerShell к базе данных MDT. Для этого воспользуемся командлетом Connect-MDTDatabase. Чтобы просмотреть синтаксис этого командлета, введите Get-Help Connect-MDTDatabase, как показано здесь:
Рисунок 5: Просмотр синтаксиса для Connect-MDTDatabase
Кончик:
Вы также можете узнать больше об использовании этого командлета из записи в блоге Майкла.
Чтобы подключиться к базе данных MDT с именем MDT в экземпляре SQL Server с именем SQLEXPRESS на сервере MDT с именем SEA-MDT-01, введите следующую команду:
Connect-MDTDatabase – sqlServer SEA-MDT-01 – экземпляр SQLEXPRESS – база данных MDT
Рисунок 6: Подключение к базе данных MDT
Работа с элементами компьютера
Давайте начнем с того, что посмотрим, есть ли уже какие-либо элементы компьютеров в базе данных MDT. Для этого мы собираемся использовать командлет Get-MDTComputer, поэтому давайте воспользуемся Get-Help, чтобы просмотреть синтаксис этого командлета:
Рисунок 7: Просмотр синтаксиса для Get-MDTComputer
Чтобы перечислить все существующие элементы компьютеров в базе данных, просто введите Get-MDTComputer следующим образом:
Рисунок 8: Список компьютеров в базе данных MDT
Командлет Get-MDTComputer показывает, что в базе данных есть один элемент компьютера и что этот элемент компьютера имеет MAC-адрес EE:EE:EE:FF:FF:FF и идентификационный номер 2. Идентификационный номер является ключевым полем для компьютера. Предметы. Другими словами, каждый элемент компьютера в базе данных будет иметь уникальный идентификационный номер.
Если мы откроем Deployment Workbench, мы увидим этот элемент компьютера:
Рисунок 9: Просмотр элемента компьютера с помощью Workbench
Мы могли бы удалить этот элемент компьютера с помощью Workbench, но давайте сделаем это с помощью PowerShell. При необходимости введите Get-Help Remove-MDTComputer, чтобы отобразить синтаксис для удаления элементов компьютера. затем введите Remove-MDTComputer –id 2 –verbose, чтобы удалить элемент компьютера и отобразить подробные сведения об операции:
Рисунок 10: Удаление элемента компьютера из базы данных
Импорт компьютеров в базу данных
Теперь давайте массово импортируем несколько компьютеров в базу данных. Начните с создания электронной таблицы Excel с различными столбцами для имени, UUID, MAC-адреса и других свойств этих компьютеров. Каждая строка электронной таблицы будет соответствовать одному компьютеру. Для этого пошагового руководства я создал электронную таблицу нескольких компьютеров в своей лаборатории:
Рисунок 11: Создайте электронную таблицу для ваших целевых компьютеров
Теперь экспортируйте эту электронную таблицу в виде текстового файла с разделителями-запятыми (CSV) (с именем C:Datamachines.txt), который вы можете открыть в Блокноте для просмотра:
Рисунок 12: CSV-файл для целевых компьютеров
Теперь используйте команду Import-Csv, чтобы импортировать файл CSV и назначить его переменной $machines следующим образом:
$machines = Import-CSV C:Datamachines.txt
Рисунок 13: Импорт CSV-файла в переменную
При вводе $machines отображается импортированная информация, которая хранится в виде массива:
Рис. 14. Информация о компьютере хранится в виде массива
Вы можете ввести $machines.count, чтобы отобразить количество элементов в этом массиве:
Рис. 15. Массив состоит из 3 элементов, по одному для каждого компьютера.
Чтобы отобразить первый элемент массива, вы можете ввести $machines[0] следующим образом:
Рисунок 16: Отображение первого элемента массива
Как видно из рисунка выше, первый элемент массива содержит информацию о первом компьютере. Чтобы отобразить только имя этого компьютера, введите $machines[0].name следующим образом:
Рисунок 17: Отображение имени первого компьютера
Добавление импортированных компьютеров в базу данных
Теперь, когда мы немного знаем об управлении массивами, мы готовы импортировать информацию, хранящуюся в переменной массива $machines, в нашу базу данных MDT. Для этого мы будем использовать командлет New-MDTComputer, поэтому давайте покажем синтаксис этого командлета:
Рисунок 18: Посмотрите синтаксис для New-MDTComputer
Помните из статьи 16, что элементы компьютеров должны быть однозначно идентифицированы в базе данных с использованием одного (или нескольких) из следующих полей:
- Универсальный уникальный идентификатор (UUID)
- Тег объекта
- Серийный номер
- MAC-адрес
Давайте добавим элемент компьютера для первого компьютера в нашу электронную таблицу, используя его MAC-адрес в качестве идентификатора. Для этого набираем следующую команду:
New-MDTComputer –macAddress $machines[0].mac –settings @{OSInstall='YES'}
Рисунок 19: Добавление первого компьютера в базу данных с использованием его MAC-адреса в качестве идентификатора
Закройте и снова откройте Workbench, чтобы обновить его, и вы должны увидеть новый элемент компьютера:
Рисунок 20: Новый элемент компьютера добавлен в базу данных
Если дважды щелкнуть этот элемент компьютера, можно отобразить его свойства:
Рисунок 21: Свойства нового элемента компьютера
Выбор вкладки Details показывает, что для свойства OSinstall установлено значение YES, как и ожидалось:
Рисунок 22: Подробные свойства нового элемента компьютера
Однако обратите внимание на приведенный выше рисунок, что свойство OSDComputerName нового элемента компьютера не имеет значения. Свойство OSDComptuerName указывает имя, которое вы хотите, чтобы MDT присвоила целевому компьютеру, и если вы вернетесь к рисунку 11, вы увидите, что мы хотели, чтобы это свойство было установлено на DESK-A для этого конкретного компьютера.
Давайте посмотрим, как добавить новый компьютер в базу данных, указав также имя компьютера. Чтобы показать, как это сделать, давайте добавим элемент компьютера для второго компьютера в нашу электронную таблицу, используя его MAC-адрес в качестве идентификатора, а также указав его имя (которое, как вы можете видеть на предыдущем рисунке 11, должно быть DESK-B). Для этого набираем следующую команду:
New-MDTComputer –macAddress $machines[1].mac –settings @{OSInstall='YES';OSDComputerName=$machines[1].name}
Рисунок 23: Добавление второго компьютера в базу данных с использованием его MAC-адреса в качестве идентификатора и указанием имени компьютера
Если вы закроете и снова откроете Workbench, откроете свойства нового компьютера и выберете вкладку Details, вы увидите, что на этот раз свойству OSDComputerName присвоено ожидаемое значение DESK-B:
Рисунок 24: Подробные свойства нового элемента компьютера
Давайте попробуем еще один пример и добавим элемент компьютера для третьего компьютера в нашу электронную таблицу, используя его MAC-адрес в качестве идентификатора, а также указав имя компьютера, название организации и полное имя пользователя. Для этого мы введем одну команду PowerShell, но продолжим ее в несколько строк, чтобы сделать ее более читаемой:
New-MDTComputer –macAddress $machines[2].mac –settings @{
ОСУстановить='ДА';
OSDComputerName=$machines[2].name;
FullName='Майкл Аллен';
OrgName='Contoso Ltd.'}
Рисунок 25: Добавление третьего компьютера в базу данных с указанием нескольких свойств
Обратите внимание, что в PowerShell вам не нужно использовать какой-либо специальный символ продолжения строки, если команда переходит через массив, указанный фигурными скобками.
Закройте и снова откройте Workbench, откройте свойства нового компьютера и выберите вкладку «Сведения», чтобы увидеть, что ожидаемые свойства настроены:
Рисунок 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;}
}
Рисунок 27: Использование цикла For для добавления компьютеров в базу данных
Обратите внимание, что цикл не выполняется до тех пор, пока вы не наберете закрывающую фигурную скобку — вам не нужно использовать символы продолжения строки, как в VBScript.
Результат выполнения этой команды можно увидеть, открыв Workbench:
Рис. 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, а затем запустите его. Когда вы примеряете вкладку «Сведения» свойств элементов компьютеров, созданных сценарием, вы увидите, что компьютеры названы в соответствии с указанным соглашением об именовании:
Рис. 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