Установка Windows 7 - Часть 18: Определение UUID компьютераИсточник: oszone
В части 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:
Все это выглядело, конечно, немного неряшливо: не слишком хорошо запускать WBEMTEST на компьютере или подстраивать сценарий каждый раз, когда его нужно запустить. И, кроме того, предпочтительнее было бы выводить только UUID компьютера, без кучи прочих вещей впридачу. Вот как это сделать. Начнем с модифицированного сценария DisplayClassProperties.vbs, взятого из части 16 цикла статей:
Теперь для завершения того, что делает WBEMTEST, и возврата экземпляров класса Win32_ComputerSystemProduct, нам понадобится воспользоваться методом SWbemServices.InstancesOf объекта SWbemServices. Чтобы разобраться, как это нужно делать, я просто адаптировал следующий сценарий со страницы старого доброго Windows 2000 Scripting Guide (см. здесь):
Моя собственная версия вышеприведенного сценария выглядит так:
Зачем мне понадобилось, чтобы этот сценарий определял значения трех параметров - IdentifyingNumber, Name и Version? Потому что у класса Win32_ComputerSystemProduct есть три ключевых параметра, а именно (вы правильно угадали): IdentifyingNumber, Name и Version. Чтобы увидеть все это собственными глазами, обратитесь к документации по этому классу в MSDN. Помните, что ключевым параметром является параметр, обеспечивающий уникальный идентификатор экземпляра класса, а чтобы подключиться к экземпляру класса, вам нужно будет указать на конкретный экземпляр с помощью ключевого параметра класса. Ключевые параметры отмечены квалификатором "Key" в документации в MSDN; обратитесь к 13-й части моего предыдущего цикла статей о сценариях за более подробной информацией, касающейся ключевых параметров. Теперь мне нужно соединить настроенный выше сценарий с другим моим сценарием - DisplayClassProperties.vbs - чтобы создать следующий новый сценарий, который я назвал UUID.vbs (обратите внимание на то, что я упростил этот сценарий, опустив определения переменных и обработку ошибок):
Смотрите: самое сложное здесь - убедиться в правильности строк в предложении strWMIQuery = <string>. К примеру, предложение заканчивается на & chr(39), то есть одинарную кавычку, необходимую для правильного синтаксиса завершения предложения. Понадобилось немного потанцевать вокруг этого места, чтобы заставить его работать; тут мне помог такой трюк: временно вставить предложение Wscript.echo strWmiQuery сразу после предложения strWMIQuery = <string>, чтобы я мог запустить сценарий и вывести содержимое строки, чтобы увидеть, правильный ли синтаксис у строки, после чего внес изменение и запускал сценарий снова, пока не получил правильный синтаксис. Тестирование сценарияДавайте теперь посмотрим, работает ли наш сценарий, если запустить его из командной строки на компьютере, на котором установлена Windows XP (Рисунок 1): Рисунок 1: Запуск UUID.vbs на компьютере с операционной системой Давайте еще упростим запуск нашего сценария, создав дополнительный batch-файл под названием UUID.bat, который выглядит следующим образом:
Запуск сценария становится еще проще, а выходные данные - чище (Рисунок 2): Рисунок 2: Запуск UUID.bat на компьютере с операционной системой ЗаключениеВот наш сценарий и готов, теперь нам нужно создать образ WinPE и включить наш сценарий в этот образ, чтобы мы могли запускать наш сценарий на пустых системах. В следующей статье этого цикла вы узнаете, как это сделать. |