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

261 lines
6.4 KiB
Plaintext

' // ***************************************************************************
' //
' // Copyright (c) Microsoft Corporation. All rights reserved.
' //
' // Microsoft Deployment Toolkit Solution Accelerator
' //
' // File: DeployWiz_DeployRoot.vbs
' //
' // Version: 6.3.8456.1000
' //
' // Purpose: Main Client Deployment Wizard Initialization routines
' //
' // ***************************************************************************
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''
' DeployRoot!
'
Dim oXMLSiteData
Function InitializeDeployRoot
Dim oXMLDefault
Dim oItem
Dim oOption
Dim iRetVal
Dim sLocationServer
Set oXMLSiteData = nothing
document.body.onkeyDown = GetRef("KeyHandler")
' Save the local DeployRoot location
If property("LocalDeployRoot") = "" then
oProperties("LocalDeployRoot") = property("DeployRoot")
End if
' Find the LocationServer.xml file if it exists. If it doesn't, then exit.
iRetVal = oUtility.FindFile("LocationServer.xml", sLocationServer)
If iRetVal <> SUCCESS then
' Force manual entry
RadioCT2.checked = TRUE
SiteList.disabled = TRUE
DisplayLocal.style.display = "none"
DisplayValidateDeployRoot
oLogging.CreateEntry "No LocationServer.xml file was found, so no additonal DeployRoot pane initialization is required.", LogTypeInfo
Exit Function
End if
' Load the Site Configuration XML file.
Set oXMLSiteData = oUtility.CreateXMLDOMObjectEx( sLocationServer )
If oXMLSiteData is nothing or oXMLSiteData.ParseError.ErrorCode <> 0 then
' Force manual entry
RadioCT2.checked = TRUE
SiteList.disabled = TRUE
DisplayLocal.style.display = "none"
DisplayValidateDeployRoot
oLogging.CreateEntry "The LocationServer.xml file was found at " & sLocationServer & " but it could not be loaded, probably because it was invalid.", LogTypeWarning
Exit Function
End if
If not ( oXMLSiteData.selectNodes("//servers/server") is nothing ) then
While SiteList.options.length > 0
SiteList.remove 0
Wend
End if
For each oItem in oXMLSiteData.selectNodes("//servers/server")
Set oOption = document.createElement("OPTION")
oOption.Value = oUtility.SelectSingleNodeString(oItem,"serverid")
oOption.Text = oUtility.SelectSingleNodeString(oItem,"friendlyname")
SiteList.Add oOption
Next
' Now attempt to get a default from a server!
If oUtility.SelectSingleNodeString(oXMLSiteData,"//servers/QueryDefault") <> "" then
Set oXMLDefault = oUtility.CreateXMLDOMObjectEx( oUtility.SelectSingleNodeString(oXMLSiteData,"//servers/QueryDefault") )
If not (oXMLDefault is nothing) then
For each oItem in oXMLDefault.selectNodes("//DefaultSites/DefaultSite")
SiteList.Value = oItem.Text
If SiteList.Value = oItem.Text then
Exit for
End if
Next
End if
Set oXMLDefault = nothing
End if
DisplayValidateDeployRoot
End Function
'''''''''''''''''''''''''''''''''''''
' Validate DeployRoot and Credentials
'
Function ChangeServerFromSite
Dim oItem
dim UpperBound
dim oServer
dim Index
dim oServerList
if oXMLSiteData is nothing then
exit function
end if
for each oItem in oXMLSiteData.selectNodes("//servers/server")
if SiteList.value = oUtility.SelectSingleNodeString(oItem,"serverid") then
set oServerList = oItem.selectNodes("(server1|server2|server3|server4|server5|server6|server7|server8|server9|server|UNCPath)")
' Get the Weighted Value UpperBound
UpperBound = 0
for each oServer in oServerList
if oServer.Attributes.getQualifiedItem("weight","") is nothing then
UpperBound = UpperBound + 1
else
UpperBound = UpperBound + cint(oServer.Attributes.getQualifiedItem("weight","").Value)
end if
next
randomize
Index = int(rnd * UpperBound + 1)
' Pick a random server entry based on Weighted Value.
UpperBound = 0
for each oServer in oServerList
if oServer.Attributes.getQualifiedItem("weight","") is nothing then
UpperBound = UpperBound + 1
else
UpperBound = UpperBound + cint(oServer.Attributes.getQualifiedItem("weight","").Value)
end if
if Index <= UpperBound then
DeployRoot.value = oServer.Text
DisplayValidateDeployRoot
exit function
end if
next
end if
next
DisplayValidateDeployRoot
end function
Function DisplayValidateDeployRoot
DeployRoot.readonly = RadioCT1.checked
if RadioCT1.checked then
DeployRoot.style.color = "graytext"
else
DeployRoot.style.color = ""
end if
SiteList.Disabled = RadioCT2.Checked
DisplayValidateDeployRoot = ParseAllWarningLabels
end function
Function ValidateDeployRoot
Dim oItem
Dim oVariable
Dim oName
Dim sCmd
ValidateDeployRoot = DisplayValidateDeployRoot
If ValidateDeployRoot = FALSE then
Exit function
End if
' Test the share for network access.
ValidateDeployRoot = FALSE
Do
On Error Resume Next
Err.Clear
If oFSO.FileExists(DeployRoot.value & "\Control\OperatingSystems.xml" ) then
ValidateDeployRoot = TRUE
Exit Do
End if
On Error Goto 0
If Mid(DeployRoot.value, 2, 2) = ":\" then
Alert "Invalid or unrecognized path specified!" ' For example, if they specified W:\Deploy and that didn't exist
ValidateDeployRoot = FALSE
Exit Function
ElseIf not ValidateDeployRoot then
' Get the credentials and connect to the share!
oEnvironment.Item("UserID") = ""
oEnvironment.Item("UserDomain") = ""
oEnvironment.Item("UserPassword") = ""
oShell.Run "mshta.exe " & window.document.location.href & " /NotWizard /LeaveShareOpen /ValidateAgainstUNCPath:" & DeployRoot.value & " /Definition:Credentials_ENU.xml", 1, true
If UCase(oEnvironment.Item("UserCredentials")) <> "TRUE" then
Alert "Could not validate Credentials!"
Exit function
End if
End if
Loop until ValidateDeployRoot = TRUE
' Flush the value to variables.dat, before we continue.
SaveAllDataElements
SaveProperties
' Process full rules
sCmd = "wscript.exe """ & oUtility.ScriptDir & "\ZTIGather.wsf"""
oItem = oSHell.Run(sCmd, , true)
' Extract out other fields within the XML Data Object.
If oXMLSiteData is nothing then
Exit function
End if
For each oItem in oXMLSiteData.selectNodes("//servers/server")
If SiteList.value = oUtility.SelectSingleNodeString(oItem,"serverid") then
For each oVariable in oItem.selectNodes("otherparameters/parameter")
Set oName = oVariable.Attributes.getQualifiedItem("name","")
If not oName is Nothing then
oProperties(oName.Value) = oVariable.Text
End if
Next
End if
Next
End Function