Situation:
I am imaging new systems using MDT Lite-Touch. I am trying to customize the wizard to automate the naming of new systems so that they include a prefix "AG-", a department code which is selected from a drop-down box in the wizard page (eg. "COMM"), and finally the serial number of the computer being imaged, so that my result in this case would be "AG-COMM-1234567"
Progress:
- I first created the HTML page which I will include below and added a script to the page to concatenate the pieces into a variable called OSDComputername which, for testing, I could output in a msgbox and get to display correctly.
- The problem with this is I don't know how to trigger the script then assign it to the OSDComputername variable that is used throughout the rest of the Light-Touch process.
- I changed the script to a function and added it to DeployWiz_Initization.vbs then used the Initialization field in WDS to call it. I'll include the function below.
- The problem with this is I would get "Undefined Variable" for OSDComputername and I am not sure it is pulling the data from the HTML correctly.
- I tried adding the scripting into the customsettings.ini file after the "OSDComputername="
- This resulted in the wizard just outputting my code in text as the computer name.
- I am now trying adding variables to "Properties=" (eg.DepartmentName) in the customsettings.ini, pulling thier value from the HTML Form and setting that value to the variable in my function in DeployWiz_Initization.vbs and calling them after "OSDComputername=" in the fashion "OSDComputername="AG-" & %DepartmentName%" in customsettings.ini
- I am rebuilding right now and will see how this goes
Any help would be appreciated.
The HTML page:
<HTML>
<H1>Configure the computer name.</H1>
<span style="width: 95%;">
<p>Please answer the following questions. Your answers will be used to formulate the computer's name and description.</p>
<FORM NAME="TestForm">
<p>Departmental Prefix: <!-- <label class=ErrMsg id=DepartmentalPrefix_Err>* Required (MISSING)</label> -->
<SELECT NAME="DepartmentalPrefix_Edit" class=WideEdit>
<option value="AADC">AADC</option>
<option value="AEM">AEM</option>
<option value="AIP">AIP</option>
<option value="COM">COM</option>
<option value="DO">DO</option>
<option value="DSOC">DSOC</option>
<option value="EDU">EDU</option>
<option value="EPE">EPE</option>
<option value="ITN">ITN</option>
<option value="LA">LA</option>
<option value="OAP">OAP</option>
<option value="SML">SML</option>
</SELECT>
</p>
<p><span class="Larger">Client's Net<u class=larger>I</u>D:</span>
<INPUT NAME="ClientNetID" TYPE="TEXT" ID="ClientNetID" SIZE="15"></p>
<p>Building: <!-- <label class=ErrMsg id=Building_Err>* Required (MISSING)</label> -->
<SELECT NAME="Building_Edit" class=WideEdit>
<option value="Academic Surge Facility A">Academic Surge Facility A</option>
<option value="Academic Surge Facility B">Academic Surge Facility B</option>
<option value="Caldwell">Caldwell</option>
<option value="Kennedy">Kennedy</option>
<option value="Roberts">Roberts</option>
<option value="Warren">Warren</option>
</SELECT>
</p>
<p>
<span class="Larger">Room <u class=larger>N</u>umber:</span>
<input type=text id="RoomNumber" name=RoomNumber size=15 />
</p>
</FORM>
</span>
</HTML>
The Function:
Function SetComputerName
OSDComputerName = "AG-" & oEnvironment.Item("DepartmentalPrefix_Edit")
ComputerDescription = oEnvironment.Item("DepartmentalPrefix_Edit") & ", " & oEnvironment.Item("ClientNetID") & ", " & oEnvironment.Item("RoomNumber") & " " & oEnvironment.Item("Building_Edit")
End Function
Issue Resolved!
The HTML page:
<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>
The Function:
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
The real change is in the Function how I needed to retrieve the values from my custom HTML screens. You will see in the working Function that I had to set each value using the format: Document.FormName.FieldName.Value
I could then use the built-in Environmental Items to collect the Make, Model, and Serial Number. Once I had all of the pieces, all of the user selections and built-in values, it was simply a matter of concatenating the strings in the order I wanted and assigning the value to the Environmental Items "OSDComputerName" and "ComputerDescription".
I also made use of ButtonNext.disabled to make all of the fields required before the user was able to continue to the next screen.