Files
Infra-LAB/projects/MDT/Scripts/DeployWiz_ComputerName.vbs

408 lines
9.5 KiB
Plaintext

' // ***************************************************************************
' //
' // Copyright (c) Microsoft Corporation. All rights reserved.
' //
' // Microsoft Deployment Toolkit Solution Accelerator
' //
' // File: DeployWiz_Initialization.vbs
' //
' // Version: 6.3.8456.1000
' //
' // Purpose: Main Client Deployment Wizard Initialization routines
' //
' // ***************************************************************************
Option Explicit
Function InitializeComputerName
If oProperties("OSDComputerName") = "" then
OSDComputerName.Value = oUtility.ComputerName
End if
If UCase(oEnvironment.Item("SkipComputerName")) = "YES" then
OSDComputerName.disabled = true
End if
End Function
Function ValidateComputerName
' Check Warnings
ParseAllWarningLabels
If Len(OSDComputerName.value) > 15 then
InvalidChar.style.display = "none"
TooLong.style.display = "inline"
ValidateComputerName = false
ButtonNext.disabled = true
ElseIf IsValidComputerName ( OSDComputerName.Value ) then
ValidateComputerName = TRUE
InvalidChar.style.display = "none"
TooLong.style.display = "none"
Else
InvalidChar.style.display = "inline"
TooLong.style.display = "none"
ValidateComputerName = false
ButtonNext.disabled = true
End if
End function
''''''''''''''''''''''''''''
Function AddItemToMachineObjectOUOpt(item)
Dim oOption
set oOption = document.createElement("OPTION")
oOption.Value = item
oOption.Text = item
oOption.Title = item
MachineObjectOUOptional.Add oOption
MachineObjectOUOptionalBtn.style.display = "inline"
End function
Function InitializeDomainMembership
Dim oLDAP, oOptOU, oItem
Dim sFoundFile
Dim iRetVal
' Prepopulate the join account details if they are presently blank
If Property("DomainAdmin") = "" and Property("DomainAdminDomain") = "" and Property("DomainAdminPassword") = "" then
If Property("UserID") <> "" and Property("UserDomain") <> "" and Property("UserPassword") <> "" Then
DomainAdmin.value = Property("UserID")
DomainAdminDomain.value = Property("UserDomain")
DomainAdminPassword.value = Property("UserPassword")
End if
End if
If JoinWorkgroup.value <> "" then
JDRadio2.checked = TRUE
ElseIf JoinDomain.Value = "" then
On Error Resume Next
JoinDomain.value = CreateObject("ADSystemInfo").DomainDNSName
On Error Goto 0
If JoinDomain.Value = "" then
JoinWorkgroup.value = "WORKGROUP"
JDRadio2.checked = TRUE
Else
JDRadio1.checked = TRUE
' Domain.value = JoinDomain.Value
On error resume next
' Will extract out the existing OU (if any) for the current machine.
set oLDAP = GetObject("LDAP://" & CreateObject("ADSystemInfo").ComputerName)
MachineObjectOU.Value = oLDAP.Get("Organizational-Unit-Name")
On error goto 0
End if
End if
''''''''''''''''''''''''''''''''
'
' Populate OU method #1 - Query ADSI
'
MachineObjectOUOptionalBtn.style.display = "none"
''''''''''''''''''''''''''''''''
'
' Populate OU method #2 - Read MachineObjectOUOptional[1...n] property
'
If MachineObjectOUOptionalBtn.style.display <> "inline" then
oOptOU = Property("DomainOUs")
If isarray(oOptOU) then
For each oItem in oOptOU
AddItemToMachineObjectOUOpt oItem
Next
MachineObjectOUOptionalBtn.style.display = "inline"
ElseIf oOptOU <> "" then
AddItemToMachineObjectOUOpt oOptOU
End if
End if
''''''''''''''''''''''''''''''''
'
' Populate OU method #3 - Read ...\control\DomainOUList.xml
'
' Example:
' <?xml version="1.0" encoding="utf-8"?>
' <DomainOUs>
' <DomainOU>OU=Test1</DomainOU>
' <DomainOU>OU=Test2</DomainOU>
' </DomainOUs>
'
If MachineObjectOUOptionalBtn.style.display <> "inline" then
iRetVal = oUtility.FindFile( "DomainOUList.xml" , sFoundFile)
if iRetVal = SUCCESS then
For each oItem in oUtility.CreateXMLDOMObjectEx( sFoundFile ).selectNodes("//DomainOUs/DomainOU")
AddItemToMachineObjectOUOpt oItem.text
Next
End if
End if
If MachineObjectOUOptionalBtn.style.display = "inline" then
document.body.onMouseDown = getRef("DomainMouseDown")
document.body.onKeyDown = getRef("MachineObjectOUOptionalKeyPress")
End if
ValidateDomainMembership
End Function
Function MachineObjectOUOptionalKeyPress
dim OUOpt
on error resume next
set OUOpt = MachineObjectOUOptional
on error goto 0
If isempty(OUOpt) then
KeyHandler
ElseIf window.event.srcElement is MachineObjectOUOptional then
If window.event.keycode = 13 then
' Enter
MachineObjectOU.value = MachineObjectOUOptional.value
PopupBox.style.display = "none"
ElseIf window.event.keycode = 27 then
' escape
PopupBox.style.display = "none"
End if
Else
KeyHandler
End if
End function
Function DomainMouseDown
If not window.event.srcElement is MachineObjectOUOptional and not window.event.srcElement is MachineObjectOUOptionalBtn then
PopupBox.style.display = "none"
End if
End function
Function HideUnHideComboBox
If UCase(PopupBox.style.display) <> "NONE" then
HideUnhide PopupBox, FALSE
document.body.onMouseDown = ""
document.body.onKeyDown = getRef("KeyHandler")
Else
HideUnhide PopupBox, TRUE
MachineObjectOUOptional.focus
document.body.onMouseDown = getRef("DomainMouseDown")
document.body.onKeyDown = getRef("MachineObjectOUOptionalKeyPress")
End if
End function
Function ValidateDomainMembership_Final
If JDRadio1.checked then
RMPropIfFound("JoinWorkgroup")
JoinWOrkgroup.Value = ""
Else
RMPropIfFound("JoinDomain")
JoinDomain.Value = ""
End if
ValidateDomainMembership_Final = true
End function
'''''''''''''''''''''''''''''''''''''
' Validate Domain Membership
'
Function ValidateDomainMembership
Dim IsDomain
Dim r
MissingCredentials.style.display = "none"
InvalidCredentials.style.display = "none"
InvalidOU.style.display = "none"
isDomain = JDRadio1.checked
If not isDomain then
RMPropIfFound("BdeInstall")
RMPropIfFound("BdeInstallSuppress")
RMPropIfFound("DoCapture")
RMPropIfFound("BackupFile")
If Property("DeploymentType") <> "REFRESH" and Property("DeploymentType") <> "REPLACE" then
RMPropIfFound("ComputerBackupLocation")
End if
End if
If UCase(oEnvironment.Item("SkipDomainMembership")) = "YES" then
' Hide all the domain/workgroup settings
DomainSection.style.display = "none"
JDRadio1.disabled = true
JDRadio2.disabled = true
JoinDomain.disabled = true
DomainAdmin.disabled = true
DomainAdminDomain.disabled = true
DomainAdminPassword.disabled = true
MachineObjectOU.disabled = true
MachineObjectOUOptionalBtn.disabled = true
MachineObjectOUOptional.disabled = true
JoinWorkgroup.disabled = true
ValidateDomainMembership = true
' Don't do any more validation because this has been disabled
Exit Function
Else
JoinDomain.disabled = not isDomain
DomainAdmin.disabled = not isDomain
DomainAdminDomain.disabled = not isDomain
DomainAdminPassword.disabled = not isDomain
MachineObjectOU.disabled = not isDomain
MachineObjectOUOptionalBtn.disabled = not isDomain
MachineObjectOUOptional.disabled = not isDomain
JoinWorkgroup.disabled = isDomain
End if
' Check Warnings
ValidateDomainMembership = ParseAllWarningLabels
' Check domain settings (without validation of credentials)
If IsDomain then
' Make sure the join account details are specified
If Trim(DomainAdmin.value) = "" or Trim(DomainAdminPassword.value) = "" or (Instr(DomainAdmin.Value, "@") = 0 and Trim(DomainAdminDomain.Value) = "") then
MissingCredentials.style.display = "inline"
ValidateDomainMembership = false
End if
' Check OU to make sure it is a valid format
If MachineObjectOU.Value <> "" then
' Make sure it starts with "OU=" or "OU " (equal could be preceeded by spaces)
If Left(UCase(Trim(MachineObjectOU.Value)), 3) <> "OU=" and Left(UCase(Trim(MachineObjectOU.Value)), 3) <> "OU " then
InvalidOU.style.display = "inline"
ValidateDomainMembership = false
End if
End if
End if
' Check credentials
If IsDomain and ValidateDomainMembership and (not window.event is Nothing) then
' Only check credentials when the next button is clicked
If window.event.srcElement is ButtonNext or window.event.KeyCode = 13 then
oLogging.CreateEntry "Validate Domain Credentials [" & DomainAdminDomain.value & "\" & DomainAdmin.value & "]", LogTypeInfo
If oEnvironment.Item("OSVersion") <> "WinPE" then
' Check using ADSI (not possible in Windows PE)
r = CheckCredentialsAD(DomainAdminDomain.value, DomainAdmin.value, DomainAdminDomain.value, DomainAdminPassword.value)
If r <> TRUE then
InvalidCredentials.innerText = "* Invalid credentials: " & r
InvalidCredentials.style.display = "inline"
ValidateDomainMembership = false
End if
ElseIf oEnvironment.Item("ValidateDomainCredentialsUNC") <> "" then
' Check using ADSI (not possible in Windows PE)
oLogging.CreateEntry "Validate Domain Credentials against UNC: " & oEnvironment.Item("ValidateDomainCredentialsUNC") , LogTypeInfo
r = CheckCredentials( oEnvironment.Item("ValidateDomainCredentialsUNC") , DomainAdmin.value, DomainAdminDomain.value, DomainAdminPassword.value)
oLogging.CreateEntry "Validate Domain Credentials against UNC: result = " & r , LogTypeInfo
If r <> TRUE then
InvalidCredentials.innerText = "* Invalid credentials: " & r
InvalidCredentials.style.display = "inline"
ValidateDomainMembership = false
End if
End if
End if
End if
' We need to clean up the keyboard hook
If ValidateDomainMembership then
document.body.onMouseDown = ""
End if
End Function