修改 MDT 向导以自动化计算机命名

修改 MDT 向导以自动化计算机命名

情况:

我正在使用 MDT Lite-Touch 为新系统创建映像。我正在尝试自定义向导以自动命名新系统,使其包含前缀“AG-”、从向导页面的下拉框中选择的部门代码(例如“FOO”),最后是正在创建映像的计算机的序列号,这样我在本例中的结果将是“AG-FOO-1234567”

地位:

我已经为此苦苦挣扎了一段时间,但我的谷歌搜索并没有找到答案,我的反复试验并没有产生有用的错误消息,而且我认为我缺少一些关于如何将向导页面中的变量放入轻触向导使用的变量中的基础知识。

进步:

  1. 我首先创建了下面将要包含的 HTML 页面,并向页面添加了一个脚本,将各个部分连接成一个名为 OSDComputername 的变量,为了进行测试,我可以将其输出到 msgbox 中并正确显示。
    • 问题在于我不知道如何触发脚本,然后将其分配给在其余 Light-Touch 过程中使用的 OSDComputername 变量。
  2. 我将脚本改为函数,并将其添加到 DeployWiz_Initization.vbs,然后使用 WDS 中的初始化字段来调用它。我将在下面包含该函数。
    • 问题在于我会得到 OSDComputername 的“未定义变量”,并且我不确定它是否正确地从 HTML 中提取数据。
  3. 我尝试在 customsettings.ini 文件中的“OSDComputername=”后面添加脚本
    • 这导致向导仅以文本形式输出我的代码作为计算机名称。
  4. 我尝试在 customsettings.ini 中向“Properties=”(例如 DepartmentName)添加变量,从 HTML 表单中提取它们的值,并将该值设置为 DeployWiz_Initization.vbs 中函数中的变量,并在 customsettings.ini 中以“OSDComputername=AG-”& %DepartmentName%”的方式在“OSDComputername=”之后调用它们
    • 这导致我的脚本出现错误,无法正确访问新变量
  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

答案1

问题已解决。我已更新上述代码以反映我所做的更改。

相关内容