Ситуация:
Я визуализирую новые системы с помощью MDT Lite-Touch. Я пытаюсь настроить мастер для автоматизации именования новых систем, чтобы они включали префикс «AG-», код отдела, который выбирается из раскрывающегося списка на странице мастера (например, «FOO»), и наконец, серийный номер компьютера, на котором создается образ, так что мой результат в этом случае будет «AG-FOO-1234567»
Положение дел:
Я долго занимался этим, но мои поиски в Google не дали ответов, мой метод проб и ошибок не дает полезных сообщений об ошибках, и я думаю, что мне не хватает некоторых основ того, как получить переменные со страницы мастера в переменные, используемые мастером lite-touch.
Прогресс:
- Сначала я создал HTML-страницу, которую включу ниже, и добавил на страницу скрипт для объединения частей в переменную с именем OSDComputername, которую для тестирования я мог бы выводить в msgbox и отображать правильно.
- Проблема в том, что я не знаю, как запустить сценарий, а затем назначить его переменной OSDComputername, которая используется в остальной части процесса Light-Touch.
- Я изменил сценарий на функцию и добавил его в DeployWiz_Initization.vbs, а затем использовал поле инициализации в WDS для его вызова. Я включу функцию ниже.
- Проблема в том, что я бы получил «Undefined Variable» для OSDComputername, и я не уверен, что он правильно извлекает данные из HTML.
- Я попытался добавить сценарий в файл customsettings.ini после "OSDComputername ="
- В результате мастер просто выводил мой код в текстовом виде в качестве имени компьютера.
- Я попытался добавить переменные в «Properties =» (например, DepartmentName) в customsettings.ini, вытащив их значение из HTML-формы и установив это значение для переменной в моей функции в DeployWiz_Initization.vbs и вызвав их после «OSDComputername =» в мода "OSDComputername =" AG- "&% DepartmentName%" в customsettings.ini
- Это привело к ошибкам моего скрипта, который неправильно обращался к новым переменным.
- Теперь мой код работает. Он извлекает данные из 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
Проблема решена. Я обновил приведенный выше код, чтобы отразить внесенные мной изменения.