Установка Windows 7 - Часть 18: Определение UUID компьютера
HashFlare
 
Главная HI-TECH Форум Поиск Книги Авторам Новости партнёров Реклама
Новостей на сайте: 10263
Программы  
  Система
  Безопасность
  Интернет и сети
  Текст
  Графика и дизайн
  Мультимедиа
  Программирование
  Бизнес
  Образование
  Дом, семья, хобби
  Игры и развлечения
 
Рассылка
 
HashFlare
 
Рейтинг программ...    
    Ф2Мастер Банк (138118)
    Коллекция руссификаторов O-S (34190)
    Товар версия 1.10 (25115)
    Коллекция софта № 13 (24442)
    New_Profile v3.4 (400) (23773)
    NetGraf 1.0 (23088)
    Revolter Commander 3.9 beta 8 (16214)
    Коллекция софта № 14 (15407)
    Net Transport 2.22 (15214)
    Intel Sound MAX 4.0 Ac' 97 5.12.01 (15074)
 

[!] Знаете ли Вы, что на сайте проходит опрос по поводу создания галереи с logon-screens, boot-screens, темами и обоями? Пожалуйста, выскажите своё мнение здесь.


Windows 7 Статьи
Установка Windows 7 - Часть 18: Определение UUID компьютера

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

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

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

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

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

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

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


' DisplayClassProperties.vbs
' Используется для нахождения UUID конкретного ПК
' Автор: Mitch Tulloch (www.mtit.com)
Option Explicit
On Error Resume Next
Dim strComputer
Dim strWMINamespace
Dim strWMIQuery
Dim objWMIService
Dim colItems
Dim objItem
strComputer = "."
strWMINamespace = "\root\CIMV2"
strWMIQuery = ":Win32_ComputerSystemProduct.IdentifyingNumber='MXG5380254 NA540',Name='PY196AV-ABA a1130e',Version='0n31211CT101AMBEM00'"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & strWMINamespace & strWMIQuery)
WScript.Echo "Number of properties of " & strWMIQuery & " class is " & objWMIService.Properties_.count
For Each objItem in objWMIService.Properties_
Wscript.Echo "Property: " & objItem.name & vbTab & "Value: " & objItem.value
Next

Теперь для завершения того, что делает WBEMTEST, и возврата экземпляров класса Win32_ComputerSystemProduct, нам понадобится воспользоваться методом SWbemServices.InstancesOf объекта SWbemServices. Чтобы разобраться, как это нужно делать, я просто адаптировал следующий сценарий со страницы старого доброго Windows 2000 Scripting Guide (см. здесь):
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.ExecQuery _
("SEL ECT * FROM Win32_Service")
For Each objSWbemObject In colSWbemObjectSet
Wscript.Echo "Name: " & objSWbemObject.Name
Next

Моя собственная версия вышеприведенного сценария выглядит так:
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.ExecQuery _
("SEL ECT * FR OM Win32_ComputerSystemProduct")
For Each objSWbemObject In colSWbemObjectSet
strIdentifyingNumber = objSWbemObject.IdentifyingNumber
strName = objSWbemObject.Name
strVersion = objSWbemObject.Version
Next
Wscript.Echo "IdentifyingNumber: " & strIdentifyingNumber
Wscript.Echo "Name: " & strName
Wscript.Echo "Version: " & strVersion

Зачем мне понадобилось, чтобы этот сценарий определял значения трех параметров - IdentifyingNumber, Name и Version? Потому что у класса Win32_ComputerSystemProduct есть три ключевых параметра, а именно (вы правильно угадали): IdentifyingNumber, Name и Version. Чтобы увидеть все это собственными глазами, обратитесь к документации по этому классу в MSDN. Помните, что ключевым параметром является параметр, обеспечивающий уникальный идентификатор экземпляра класса, а чтобы подключиться к экземпляру класса, вам нужно будет указать на конкретный экземпляр с помощью ключевого параметра класса. Ключевые параметры отмечены квалификатором "Key" в документации в MSDN; обратитесь к 13-й части моего предыдущего цикла статей о сценариях за более подробной информацией, касающейся ключевых параметров.

Теперь мне нужно соединить настроенный выше сценарий с другим моим сценарием - DisplayClassProperties.vbs - чтобы создать следующий новый сценарий, который я назвал UUID.vbs (обратите внимание на то, что я упростил этот сценарий, опустив определения переменных и обработку ошибок):
'UUID.vbs
' Отображает UUID компьютера
' Автор: Mitch Tulloch (www.mtit.com)
strComputer = "."
strWMINamespace = "\root\CIMV2"
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FR OM Win32_ComputerSystemProduct")
For Each objSWbemObject In colSWbemObjectSet
strIdentifyingNumber = objSWbemObject.IdentifyingNumber
strName = objSWbemObject.Name
strVersion = objSWbemObject.Version
Next
strWMIQuery = ":Win32_ComputerSystemProduct.IdentifyingNumber='" & strIdentifyingNumber _
& "',Name='" & strName & "',Version='" & strVersion & chr(39)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & strWMINamespace & strWMIQuery)
For Each objItem in objWMIService.Properties_
If objItem.name = "UUID" Then
Wscript.Echo objItem.name & " = " & objItem.value
End If
Next

Смотрите: самое сложное здесь – убедиться в правильности строк в предложении strWMIQuery = . К примеру, предложение заканчивается на & chr(39), то есть одинарную кавычку, необходимую для правильного синтаксиса завершения предложения. Понадобилось немного потанцевать вокруг этого места, чтобы заставить его работать; тут мне помог такой трюк: временно вставить предложение Wscript.echo strWmiQuery сразу после предложения strWMIQuery = , чтобы я мог запустить сценарий и вывести содержимое строки, чтобы увидеть, правильный ли синтаксис у строки, после чего внес изменение и запускал сценарий снова, пока не получил правильный синтаксис.
Тестирование сценария

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







Рисунок 1: Запуск UUID.vbs на компьютере с операционной системой

Давайте еще упростим запуск нашего сценария, создав дополнительный batch-файл под названием UUID.bat, который выглядит следующим образом:
@ECHO OFF
cscript.exe //nologo UUID.vbs

Запуск сценария становится еще проще, а выходные данные - чище (Рисунок 2):







Рисунок 2: Запуск UUID.bat на компьютере с операционной системой
Заключение

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


Ссылки по теме:
Изменение поведения стопки окон в панели задач Windows 7
Добавление вкладок во все окна Windows 7
Использование пользовательских шаблонов ADM в Windows Server 2008/Vista/7
Нет MED-V? Выполните P2V XP в W7 с помощью MDT
Диагностика сети и мониторинг в Windows 7



 
Статьи    
  Windows 10
  Windows 8
  Windows 7
  Windows Vista
  Windows XP/2003
  Windows NT/2000
  Безопасность
  Windows 9x/ME
  Hardware
  Software
  Интернет
  BIOS
  Сеть
  Разное
 
Рекомендуем
 
 
Рейтинг статей...    
    Предел входящих подключений в Windows (128324)
    Как установить Windows XP на ноутбук или как добавить SATA-драйвер в дистрибутив Windows XP (67943)
    Из дома в офис - быстро, надежно и безопасно (55202)
    Всё, что надо начинающему хакеру (48825)
    Восстановление реестра Windows XP (22999)
    Второй сервис-пак для Windows XP: личный опыт (22992)
    Вызываем синий экран смерти Windows (18226)
    Информация о proxy серверах (17038)
    Как устроена защита Windows Vista (16946)
    Настройка удаленного подключения между Windows 7 и Linux с помощью TightVNC (16820)
 
 
Programmed by Ventura
 

 

Яндекс цитирования