Развертывание Windows 7. Часть 18. Определение UUID компьютера

Опубликовано: 22 Марта, 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. Часть 20. Защита MDT (часть 1)
  • Развертывание Windows 7. Часть 21. Защита MDT (часть 2)
  • Развертывание Windows 7. Часть 22. Массовое заполнение базы данных MDT с помощью PowerShell
  • Развертывание Windows 7. Часть 23. Управление драйверами.
  • Развертывание 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, где вы найдете последние обновления и другую полезную информацию.

В части 16 этой серии вы узнали, как использовать базу данных MDT для настройки развертывания Windows 7 на основе UUID каждого целевого компьютера. В этой статье вы также узнали, как использовать WMI для определения UUID компьютера, если этот UUID не отображается в BIOS системы или сопроводительной документации. Однако метод, который мы использовали для этого, был немного запутанным, плюс на компьютере, UUID которого вы хотите определить, уже должна была быть установлена операционная система Windows.

Возникает вопрос: можно ли использовать WMI для определения UUID компьютера, если на нем не установлена операционная система? Ответ: Да. Для этого нам сначала нужно очистить сценарии, которые мы сделали в последних двух статьях. Затем нам нужно создать собственный образ среды предустановки Windows (WinPE), добавить сценарии в этот образ и записать образ на компакт-диск. Затем вы можете использовать этот компакт-диск для загрузки компьютера с «голым железом» в WinPE и запуска сценария для определения UUID системы.

И именно об этом настоящая статья и следующая. Во-первых, в этой статье мы создадим чистый небольшой скрипт, который будет отображать UUID компьютера без каких-либо возни. Затем в следующей статье мы узнаем, как создать настраиваемый компакт-диск с инструментами WinPE, который можно использовать для запуска сценария на «голом железе» без установленной операционной системы, чтобы определить UUID системы. После того, как вы использовали свой компакт-диск WinPE для запуска сценария на нескольких целевых компьютерах, вы можете ввести эти UUID в базу данных MDT и развернуть настроенные образы Windows на каждом компьютере по желанию.

Совет. Если вы не знакомы со сценариями WMI, ознакомьтесь с моей вводной серией из 14 статей на сайте WindowsNetworking.com под названием «Управление сетями Windows с помощью сценариев».

Скрипт для определения UUID компьютера

В части 16 этой серии мы видели, как мы можем определить UUID компьютера с помощью WMI следующим образом:

  1. Мы начали со сценария DisplayClassProperties.vbs из 13-й части моей предыдущей серии статей о сценариях, который отображает имена всех свойств класса WMI вместе со значениями этих свойств.
  2. Затем мы запустили WBEMTEST на компьютере, чтобы определить, как нам нужно настроить строку strWMIQuery = <string> нашего скрипта, чтобы скрипт работал на этом конкретном компьютере. Фактические шаги для этого: (a) запустите WBEMTEST (b) подключитесь к пространству имен rootcimv2 (c) щелкните Enum Instances (d) введите Win32_ComputerSystemProduct (e) нажмите OK. Полученный результат WBEMTEST затем используется в качестве значения <string> в приведенной выше строке нашего скрипта. И это нужно делать вручную, так как выходные данные WBEMTEST не поддерживают копирование в буфер обмена!
  3. Затем, когда сценарий был настроен, мы запустили его на компьютере и включили в вывод сценария UUID компьютера.

Конечно, все это было немного запутанно — нам бы не хотелось запускать WBEMTEST на компьютере или настраивать сценарий каждый раз, когда нам нужно его запустить. И мы бы предпочли, чтобы скрипт выдавал UUID компьютера, а не кучу других вещей.

Вот как мы можем это сделать. Мы начнем с модифицированного сценария DisplayClassProperties.vbs, взятого из части 16 этой серии:

' DisplayClassProperties.vbs
' Используется для поиска UUID определенного настольного компьютера
' Митч Таллох (www.mtit.com)
Опция явная
При ошибке Возобновить Далее
Dim strКомпьютер
Dim strWMINamespace
Dim strWMIQuery
Дим objWMIService
тусклые элементы
Тусклый объект
улКомпьютер = "."
strWMINamespace = " ootCIMV2"
strWMIQuery = ":Win32_ComputerSystemProduct.IdentifyingNumber='MXG5380254 NA540',Name='PY196AV-ABA a1130e',Version='0n31211CT101AMBEM00'"
Установите objWMIService = GetObject("winmgmts:\" & strComputer & strWMINamespace & strWMIQuery)
WScript.Echo «Количество свойств класса » & strWMIQuery & » равно » & objWMIService.Properties_.count
Для каждого объекта objItem в objWMIService.Properties_
Wscript.Echo «Свойство: » & objItem.name & vbTab & «Значение: » & objItem.value
Следующий


















Теперь, чтобы выполнить то, что делает WBEMTEST, и вернуть экземпляры класса Win32_ComputerSystemProduct, нам потребуется использовать метод SWbemServices.InstancesOf объекта SWbemServices. Чтобы понять, как это сделать, я просто адаптировал следующий сценарий со страницы старого доброго Руководства по созданию сценариев для Windows 2000 (см. здесь):

улКомпьютер = "."
Установите objSWbemServices = GetObject("winmgmts:\" & strComputer & " ootcimv2")
Установить colSWbemObjectSet = objSWbemServices.ExecQuery _
(«ВЫБЕРИТЕ * ИЗ Win32_Service»)
Для каждого объекта objSWbemObject в colSWbemObjectSet
Wscript.Echo «Имя:» и objSWbemObject.Name
Следующий






Моя настроенная версия приведенного выше скрипта выглядит так:

стрКомпьютер = «.»
Установите objSWbemServices = GetObject("winmgmts:\" & strComputer & " ootcimv2")
Установить colSWbemObjectSet = objSWbemServices.ExecQuery _
(«ВЫБЕРИТЕ * ИЗ Win32_ComputerSystemProduct»)
Для каждого объекта objSWbemObject в colSWbemObjectSet
strIdentifyingNumber = objSWbemObject.IdentifyingNumber
strName = objSWbemObject.Name
strVersion = objSWbemObject.Version
Следующий
Wscript.Echo «Идентифицирующий номер:» и strИдентифицирующий номер
Wscript.Echo «Имя:» & strName
Wscript.Echo «Версия:» и strVersion











Причина, по которой мне нужен приведенный выше сценарий для определения значений трех свойств «Идентифицирующий номер», «Имя» и «Версия», заключается в том, что класс Win32_ComputerSystemProduct имеет три ключевых свойства, а именно (как вы уже догадались) «Идентифицирующий номер», «Имя» и «Версия». Чтобы увидеть это, обратитесь к странице документации для этого класса в MSDN. Помните, что ключевое свойство — это свойство, предоставляющее уникальный идентификатор для экземпляра класса, и для подключения к экземпляру класса вам необходимо указать конкретный экземпляр с помощью ключевого свойства класса. Ключевые свойства помечены квалификатором «Key» в документации MSDN — вернитесь к части 13 моей предыдущей серии статей о сценариях для получения дополнительной информации о ключевых свойствах.

Теперь мне просто нужно объединить приведенный выше настроенный сценарий с моим более ранним сценарием DisplayClassProperties.vbs, чтобы создать следующий новый сценарий, который я назвал UUID.vbs (обратите внимание, что я упростил этот сценарий, опустив определения переменных и обработку ошибок):

'UUID.vbs
'Отображает UUID компьютера
'Митч Таллох (www.mtit.com)
стрКомпьютер = «.»
strWMINamespace = " ootCIMV2"
Установите objSWbemServices = GetObject("winmgmts:\" & strComputer & " ootcimv2")
Установить colSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM Win32_ComputerSystemProduct")
Для каждого объекта objSWbemObject в colSWbemObjectSet
strIdentifyingNumber = objSWbemObject.IdentifyingNumber
strName = objSWbemObject.Name
strVersion = objSWbemObject.Version
Следующий
strWMIQuery = ":Win32_ComputerSystemProduct.IdentifyingNumber='" & strIdentifyingNumber _
& "',Name='" & strName & "',Version='" & strVersion & chr(39)
Установите objWMIService = GetObject("winmgmts:\" & strComputer & strWMINamespace & strWMIQuery)
Для каждого объекта objItem в objWMIService.Properties_
Если objItem.name = "UUID" Тогда
Wscript.Echo objItem.name & ”= ” & objItem.value
Конец, если
Следующий



















Обратите внимание, что самое сложное здесь — убедиться, что кавычки в выражении strWMIQuery = <string> правильные. Например, оператор заканчивается символом & chr(39), который добавляет одинарную кавычку, необходимую для правильного завершения синтаксиса оператора. Потребовалось немного возни, чтобы заставить это работать — трюк, который помог мне, заключался в том, чтобы временно вставить оператор Wscript.echo strWmiQuery сразу после оператора strWMIQuery = <string>, чтобы я мог запустить сценарий и вывести содержимое строки, чтобы увидеть, строка имела правильный синтаксис, затем внесите изменения и снова запустите сценарий, и так далее, пока я не получу правильный синтаксис.

Тестирование скрипта

Теперь давайте посмотрим, работает ли наш скрипт, запустив его из командной строки на компьютере с установленной Windows XP (рис. 1):

Изображение 19705
Рис. 1. Запуск UUID.vbs на компьютере с установленной операционной системой

Давайте еще больше упростим запуск нашего скрипта, создав сопровождающий пакетный файл с именем UUID.bat, который выглядит следующим образом:

@ЭХО ВЫКЛ.
cscript.exe //нологовый UUID.vbs

Это упрощает запуск скрипта, а также делает вывод более чистым (рис. 2):

Изображение 19706
Рис. 2. Запуск UUID.bat на компьютере с установленной операционной системой

Вывод

Теперь, когда наш сценарий готов, нам нужно создать образ WinPE и включить наш сценарий в этот образ, чтобы мы могли запускать наш сценарий на «голых» системах. Как это сделать, вы узнаете из следующей статьи этой серии.

  • Развертывание 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. Часть 19. Создание пользовательского компакт-диска WinPE Tools
  • Развертывание Windows 7. Часть 20. Защита MDT (часть 1)
  • Развертывание Windows 7. Часть 21. Защита MDT (часть 2)
  • Развертывание Windows 7. Часть 22. Массовое заполнение базы данных MDT с помощью PowerShell
  • Развертывание Windows 7. Часть 23. Управление драйверами. Введение
  • Развертывание Windows 7. Часть 24. Управление драйверами. Проблемы и подходы
  • Развертывание Windows 7. Часть 25. Управление драйверами. Профили выбора
  • Развертывание Windows 7. Часть 26. Управление драйверами — по производителям и моделям
  • Развертывание Windows 7. Часть 27. Управление драйверами. Советы и рекомендации
  • Развертывание Windows 7. Часть 28. Управление обновлениями программного обеспечения
  • Развертывание Windows 7. Часть 29. Завершение инфраструктуры развертывания LTI