<job id="ZTINICConfig">
	<script language="VBScript" src="ZTIUtility.vbs"/>
	<script language="VBScript" src="ZTINICUtility.vbs"/>
	<script language="VBScript" src="ZTIDataAccess.vbs"/>
	<script language="VBScript">

' // ***************************************************************************
' // 
' // Copyright (c) Microsoft Corporation.  All rights reserved.
' // 
' // Microsoft Deployment Toolkit Solution Accelerator
' //
' // File:      ZTINICConfig.wsf
' // 
' // Version:   6.3.8456.1000
' // 
' // Purpose:   Configure network adapters
' // 
' // Usage:     cscript ZTINICConfig.wsf [/debug:true] [/ForceCapture] [/RestoreWithinWinPE]
' // 
' // ***************************************************************************

Option Explicit
RunNewInstance


'//----------------------------------------------------------------------------
'//  Global Constants
'//----------------------------------------------------------------------------

' No global constants needed


'//----------------------------------------------------------------------------
'//  Main Class
'//----------------------------------------------------------------------------

Class ZTINICConfig

	'//----------------------------------------------------------------------------
	'//  Class instance variable declarations
	'//----------------------------------------------------------------------------

	Dim iRetVal

	'//----------------------------------------------------------------------------
	'//  Constructor to initialize needed global objects
	'//----------------------------------------------------------------------------

	Private Sub Class_Initialize
	
	End Sub
	
	
	'//----------------------------------------------------------------------------
	'//  Main routine
	'//----------------------------------------------------------------------------

	Function Main

		'//----------------------------------------------------------------------------
		'//  Main routine
		'//----------------------------------------------------------------------------

		Dim i
		Dim oItem
		Dim oAdapter
		Dim AdapterCount
		Dim oFoundDevice
		Dim SaveMACAddress
		Dim bIsDitry
		dim arrDrives

		bIsDitry = false
		Main = success
		
		If ucase(oEnv("SystemDrive")) = "X:" and ( ucase(oEnvironment.Item("PHASE")) = "STATERESTORE" or ucase(oEnvironment.Item("PHASE")) = "STATECAPTURE" ) Then
			If not oUtility.Arguments.Exists("RestoreWithinWinPE") Then 
				'
				oLogging.CreateEntry "Environment Error: ManualRetry (From ZTINicConfig).", LogTypeInfo

				oEnvironment.Item("LTISuspend") = "LiteTouch is trying to perform NIC configuration." & _
					vbNewLine & "This cannot be performed in Windows PE." & _
					vbNewLine & "If booting from a USB Flash Disk, please remove all drives before restarting." & _
					vbNewLine & "Otherwise, ensure the hard disk is selected first in the boot order of the BIOS."
				oEnvironment.Item("SMSTSRebootRequested") = "true"
				oEnvironment.Item("SMSTSRetryRequested") = "true"
				iRetVal = SUCCESS
				Exit Function
			End if 
		End if

		oLogging.CreateEntry oUtility.ScriptName & " Script Entered." , LogTypeInfo
		oLogging.CreateEntry "             PHASE = " & oEnvironment.Item("PHASE") , LogTypeInfo
		oLogging.CreateEntry " Deployment Method = " & oEnvironment.Item("DeploymentMethod") , LogTypeInfo
		oLogging.CreateEntry "   Deployment Type = " & oEnvironment.Item("DeploymentType") , LogTypeInfo

		'//----------------------------------------------------------------------------
		'//  Check Current State
		'//----------------------------------------------------------------------------

		If (oEnvironment.Item("DEPLOYMENTTYPE") = "REFRESH" and ucase(oEnvironment.Item("PHASE")) = "STATECAPTURE") or _
			Wscript.arguments.named.Exists("ForceCapture") Then

			'//----------------------------------------------------------------------------
			'//  Capture Network Settings if requested
			'//----------------------------------------------------------------------------

			If ucase(trim(oEnvironment.Item("OSDMigrateAdapterSettings"))) = "NO" or _
			ucase(trim(oEnvironment.Item("OSDMigrateAdapterSettings"))) = "FALSE" Then

				' Network Migration turned on by default.
				oLogging.CreateEntry "Do not Capture Network Settings.", LogTypeInfo

			Else

				oLogging.CreateEntry "Capture Network Settings from local machine and write to Environment.", LogTypeInfo

				If ObjNetworkAdapters.Count = 0 then
					oLogging.CreateEntry "No network cards found to backup.", LogTypeInfo
					Main = Success
					Exit Function
				Else
					' There are multiple NIC Cards on this machine, save the MACAddress so we know which card get's which Configuration.
					SaveMACAddress = TRUE
				End If

				i = 0
				For each oAdapter in ObjNetworkAdapters

					If not oAdapter.DHCPENabled then
						SaveNetworkAdapterSettings oAdapter, i, SaveMACAddress
						i = i + 1
					End If

				Next

				oEnvironment.Item("OSDAdapterCount") = i

			End If

			Main = success

		ElseIf ((oEnvironment.Item("DEPLOYMENTTYPE") = "REFRESH" or oEnvironment.Item("DEPLOYMENTTYPE") = "NEWCOMPUTER" or oEnvironment.Item("OSGUID") = "") and _
			ucase(oEnvironment.Item("PHASE")) = "STATERESTORE") or Wscript.arguments.named.Exists("RestoreWithinWinPE") Then

			'//----------------------------------------------------------------------------
			'//  Restore Network Settings from configuration file if present
			'//----------------------------------------------------------------------------

			AdapterCount = 0
			If isnumeric(oEnvironment.Item("OSDAdapterCount")) then
				AdapterCount = cint(oEnvironment.Item("OSDAdapterCount"))
			End If

			If AdapterCount = 0 then
				oLogging.CreateEntry "No Settings Saved, Exit...", LogTypeInfo
				Main = Success
				Exit Function
			End If

			oLogging.CreateEntry "Network Config Adapter Count: " & AdapterCount, LogTypeInfo

			If ObjNetworkAdapters.Count = 0 then
				oLogging.CreateEntry "No network cards found to restore.", LogTypeInfo
				Main = Success
				Exit Function
			End If

			'
			'  For each network adapter in the Saved list...
			'
			For i = 0 to AdapterCount - 1

				oLogging.CreateEntry "Restore Network Settings (" & i & ").", LogTypeInfo

				' A Saved Entry might be bound to a specific Network Adapter, either via
				' MACAddress, Index, or Name. If present, find the associated adapter.

				set oFoundDevice = nothing

				If LoadAdapterSetting( i, "MacAddress" ) <> "" then

					For each oAdapter in ObjNetworkAdapters
						If oAdapter.MacAddress = LoadAdapterSetting( i, "MacAddress" ) then
							oLogging.CreateEntry "Found Network MAC Settings (" & oAdapter.MacAddress & ") = " & oAdapter.Description, LogTypeInfo
							set oFoundDevice = oAdapter
							Exit For
						End If
					Next

				Else

						Dim j
						j = 0
						For each oAdapter in ObjNetworkAdapters
							If j = i then
								oLogging.CreateEntry "Found Network Settings (" & oAdapter.MacAddress & ") = " & oAdapter.Description, LogTypeInfo
								set oFoundDevice = oAdapter
								exit for
							End If
							j = j + 1
						Next

				End If

				If not oFoundDevice is nothing then
					LoadNetworkAdapterSettings oFoundDevice, i
					bIsDitry = true
				Else
					oLogging.CreateEntry "No match found for Adapter(" & i & ")" , LogTypeInfo
				End If

			Next

			If bIsDitry = true and ( oUtility.dicNetworkConnections.Count > 0 or oNetwork.EnumNetworkDrives.Count > 0 ) then

				oLogging.CreateEntry "Network Settings have changed. Restablish connection to DeployRoot", LogTypeInfo

				' Discconnect
				oUtility.dicNetworkConnections.RemoveAll

				Set arrDrives = oNetwork.EnumNetworkDrives
				For i = 0 to arrDrives.Count - 1 Step 2
					If arrDrives.Item(i) <> "" and instr(1, arrDrives.Item(i+1), oEnvironment.Item("DeployRoot"), vbTextCompare) <> 0 then
						oLogging.CreateEntry "Net Use Delete: " & arrDrives.Item(i) & " = " & arrDrives.Item(i+1), LogTypeInfo
						oNetwork.RemoveNetworkDrive arrDrives.Item(i), True
					End if
				Next

				' Reconnect
				oUtility.sScriptDir = WScript.FullName & "\.."
				oUtility.ValidateConnectionEx oEnvironment.Item("DeployRoot"), True

				oEnvironment.Item("DeployDrive") = oUtility.FindMappedDrive(oEnvironment.Item("DeployRoot"))
				oLogging.CreateEntry "DeployDrive = " & oEnvironment.Item("DeployDrive"), LogTypeInfo
				oUtility.sScriptDir = oFSO.GetParentFolderName(WScript.ScriptFullName)

			End If

			Main = Success

		End If

	End Function

End Class

	</script>
</job>