Назад | Перейти на главную страницу

Измените мастер MDT для автоматизации именования компьютеров

Ситуация:

Я визуализирую новые системы с помощью MDT Lite-Touch. Я пытаюсь настроить мастер для автоматизации именования новых систем, чтобы они включали префикс «AG-», код отдела, который выбирается из раскрывающегося списка на странице мастера (например, «FOO»), и наконец, серийный номер компьютера, на котором создается образ, так что мой результат в этом случае будет «AG-FOO-1234567»

Положение дел:

Я долго занимался этим, но мои поиски в Google не дали ответов, мой метод проб и ошибок не дает полезных сообщений об ошибках, и я думаю, что мне не хватает некоторых основ того, как получить переменные со страницы мастера в переменные, используемые мастером lite-touch.

Прогресс:

  1. Сначала я создал HTML-страницу, которую включу ниже, и добавил на страницу скрипт для объединения частей в переменную с именем OSDComputername, которую для тестирования я мог бы выводить в msgbox и отображать правильно.
    • Проблема в том, что я не знаю, как запустить сценарий, а затем назначить его переменной OSDComputername, которая используется в остальной части процесса Light-Touch.
  2. Я изменил сценарий на функцию и добавил его в DeployWiz_Initization.vbs, а затем использовал поле инициализации в WDS для его вызова. Я включу функцию ниже.
    • Проблема в том, что я бы получил «Undefined Variable» для OSDComputername, и я не уверен, что он правильно извлекает данные из HTML.
  3. Я попытался добавить сценарий в файл customsettings.ini после "OSDComputername ="
    • В результате мастер просто выводил мой код в текстовом виде в качестве имени компьютера.
  4. Я попытался добавить переменные в «Properties =» (например, DepartmentName) в customsettings.ini, вытащив их значение из HTML-формы и установив это значение для переменной в моей функции в DeployWiz_Initization.vbs и вызвав их после «OSDComputername =» в мода "OSDComputername =" AG- "&% DepartmentName%" в customsettings.ini
    • Это привело к ошибкам моего скрипта, который неправильно обращался к новым переменным.
  5. Теперь мой код работает. Он извлекает данные из HTML и устанавливает переменную среды OSDComputername. Я обновил приведенный ниже код, чтобы он соответствовал рабочему коду. Он срабатывает правильно и задает имя и описание моего компьютера в точности так, как я хотел.

Проблема решена!

HTML-страница:

<H1>Configure the computer name.</H1>
<p>Please answer the following questions.  Your answers will be used to formulate the computer's name and description.</p>

<FORM NAME="SetComputerNameForm">
    <p>
        <LABEL class="Larger"><u class="Larger">D</u>epartmental Prefix:</LABEL><br />
        <SELECT NAME="DepartmentalPrefix_Edit" ID="DepartmentalPrefix_Edit" language=vbscript onpropertychange=ValidateSetComputerName AccessKey=D>
            <option value="FOO">FOO</option>
            <option value="DOE">DOE</option>
            <option value="AFK">AFK</option>
            <option value="BBL">BBL</option>
            <option value="RTFM">RTFM</option>                  
        </SELECT>
    </p>


    <p>
        <LABEL class="Larger"><u class="Larger">C</u>lient's ID:</LABEL>
        <br />
        <INPUT NAME="ClientID" ID="ClientID" TYPE="text" ID="ClientID" SIZE="15" language=vbscript onpropertychange=ValidateSetComputerName AccessKey=C />
        <label class=ErrMsg for=ClientID>* Required (MISSING)</label>


    </p>


    <p>
        <LABEL class="Larger"><u class="Larger">B</u>uilding:</LABEL><br />
        <SELECT NAME="Building_Edit" ID="Building_Edit" language=vbscript onpropertychange=ValidateSetComputerName  AccessKey=B>
                <option value="ASA">ASA</option>
                <option value="ASB">ASB</option>
                <option value="ASC">ASC</option>
        </SELECT>
    </p>


    <p>         
        <LABEL class="Larger"><u class="Larger">R</u>oom Number:</span></LABEL>
        <br />
        <INPUT NAME="RoomNumber" ID="RoomNumber" TYPE="text" ID="RoomNumber" size="15" language=vbscript onpropertychange=ValidateSetComputerName AccessKey=R>
        <label class=ErrMsg for=RoomNumber>* Required (MISSING)</label>
    </p>

</FORM>

Функция:

Function ValidateSetComputerName
    ParseAllWarningLabels

    If Len(Document.SetComputerNameForm.ClientNetID.Value) < 1 OR Len(Document.SetComputerNameForm.RoomNumber.Value) < 1 THEN
        ButtonNext.disabled = true
    Else
        Dim Department
        Dim SerialNumber
        Dim CID
        Dim RoomNumber
        Dim BuildingName
        Dim Make
        Dim Model
        Department = Document.SetComputerNameForm.DepartmentalPrefix_Edit.Value
        SerialNumber = oEnvironment.Item("SerialNumber")
        CID = Document.SetComputerNameForm.ClientID.Value
        RoomNumber = Document.SetComputerNameForm.RoomNumber.Value
        BuildingName = Document.SetComputerNameForm.Building_Edit.Value
        Make = oEnvironment.Item("Make")
        Model = oEnvironment.Item("Model")

        oEnvironment.Item("OSDComputerName") = "AG-" & Department & "-" & Right(SerialNumber,7)
        oEnvironment.Item("ComputerDescription") = Department & ", " & CID & ", " & RoomNumber & " " & BuildingName & ", " & Make & " " & Model
        ButtonNext.disabled = false
    End If

End Function

Проблема решена. Я обновил приведенный выше код, чтобы отразить внесенные мной изменения.