Ajout dela structure MDT dans Infra-LAB
This commit is contained in:
@@ -0,0 +1,407 @@
|
||||
' // ***************************************************************************
|
||||
' //
|
||||
' // 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
|
||||
Reference in New Issue
Block a user