' // *************************************************************************** ' // ' // Copyright (c) J House Consulting. All rights reserved. ' // ' // Author: Jeremy Saunders (jeremy@jhouseconsulting.com) ' // ' // File: DeployWiz_NICSettings.vbs ' // ' // Version: 1.1 ' // ' // Created: 30th December 2014 ' // Updated: 13th November 2015 ' // ' // Purpose: The initialize and validate functions for the custom Network ' // Adapter Configuration pane used to specify the IP Address ' // Settings during deployment. ' // ' // This will set the following variables: ' // - OSDAdapterCount ' // - OSDAdapter0EnableDHCP ' // - OSDAdapter0IPAddressList ' // - OSDAdapter0SubnetMask ' // - OSDAdapter0Gateways ' // - OSDAdapter0DNSServerList ' // ' // Great feedback and solution from Sascha Peter on 11th November 2015 ' // - In situations where you do not receive a default gateway from ' // DHCP or even APIPA you'll get a data type value 10 (vbError) ' // when the current value is read, which breaks the wizard. So we ' // simply first need to check if the value of the DefaultIPGateway ' // array element is a string, otherwise we ignore it, which means ' // that no current value will be displayed for the Default Gateway. ' // ' // *************************************************************************** Option Explicit ''''''''''''''''''''''''''''''''''''' ' Initialize NICSettings ' Function InitializeNICSettings Dim obutton For Each obutton in EnableDHCP If obutton.value = "TRUE" Then obutton.Checked = True exit For end If Next IPAddress.Disabled = True SubnetMask.Disabled = True DefaultGateway.Disabled = True DNSServers.Disabled = True End Function ''''''''''''''''''''''''''''''''''''' ' Validate DHCP ' Function ValidateDHCP ParseAllWarningLabels Dim obutton, oNote Dim strComputer, objWMIService, IPConfigSet, IPConfig, i oEnvironment.Item("OSDAdapterCount") = "1" For Each obutton in EnableDHCP If obutton.Checked Then oEnvironment.Item("OSDAdapter0EnableDHCP") = obutton.value exit For end If Next If Ucase(oEnvironment.Item("OSDAdapter0EnableDHCP")) = "TRUE" Then IPAddress.Disabled = True IPAddress.Value = "" SubnetMask.Disabled = True SubnetMask.Value = "" DefaultGateway.Disabled = True DefaultGateway.Value = "" DNSServers.Disabled = True DNSServers.Value = "" Else IPAddress.Disabled = False SubnetMask.Disabled = False DefaultGateway.Disabled = False DNSServers.Disabled = False strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set IPConfigSet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'True'") For Each IPConfig in IPConfigSet If Not IsNull(IPConfig.IPAddress) Then For i = LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress) If Not Instr(IPConfig.IPAddress(i), ":") > 0 Then IPAddress.Value = IPConfig.IPAddress(i) SubnetMask.Value = IPConfig.IPSubnet(i) ' Check if the value of the DefaultIPGateway array element is a string, otherwise ignore it. If VarType(IPConfig.DefaultIPGateway(i)) = 8 Then DefaultGateway.Value = IPConfig.DefaultIPGateway(i) End If End If Next End If If IsArray( IPConfig.DNSServerSearchOrder) Then If UBound( IPConfig.DNSServerSearchOrder) = 0 Then DNSServers.Value = IPConfig.DNSServerSearchOrder(0) Else DNSServers.Value = Join( IPConfig.DNSServerSearchOrder, "," ) End If End If Next Set objWMIService = Nothing Set IPConfigSet = Nothing End If For Each oNote in StaticIPNote If Ucase(oEnvironment.Item("OSDAdapter0EnableDHCP")) = "TRUE" Then oNote.style.display = "none" Else oNote.style.display = "inline" End If Next ValidateDHCP = TRUE End Function ''''''''''''''''''''''''''''''''''''' ' Validate IPAddress ' Function ValidateIPAddress ParseAllWarningLabels ValidateIPAddress = TRUE End Function ''''''''''''''''''''''''''''''''''''' ' Validate SubnetMask ' Function ValidateSubnetMask ParseAllWarningLabels ValidateSubnetMask = TRUE End Function ''''''''''''''''''''''''''''''''''''' ' Validate DefaultGateway ' Function ValidateDefaultGateway ParseAllWarningLabels ValidateDefaultGateway = TRUE End Function ''''''''''''''''''''''''''''''''''''' ' Validate DNSServers ' Function ValidateDNSServers ParseAllWarningLabels ValidateDNSServers = TRUE End Function ''''''''''''''''''''''''''''''''''''' ' Validate NICSettings ' Function ValidateNICSettings ParseAllWarningLabels Dim obutton oEnvironment.Item("OSDAdapterCount") = "1" For Each obutton in EnableDHCP If obutton.Checked Then oEnvironment.Item("OSDAdapter0EnableDHCP") = obutton.value exit For end If Next If Ucase(oEnvironment.Item("OSDAdapter0EnableDHCP")) = "TRUE" Then oEnvironment.Item("OSDAdapter0IPAddressList") = "" oEnvironment.Item("OSDAdapter0SubnetMask") = "" oEnvironment.Item("OSDAdapter0Gateways") = "" oEnvironment.Item("OSDAdapter0DNSServerList") = "" Else oEnvironment.Item("OSDAdapter0IPAddressList") = Trim(IPAddress.Value) oEnvironment.Item("OSDAdapter0SubnetMask") = Trim(SubnetMask.Value) oEnvironment.Item("OSDAdapter0Gateways") = Trim(DefaultGateway.Value) oEnvironment.Item("OSDAdapter0DNSServerList") = Trim(DNSServers.Value) End If ValidateNICSettings = TRUE End Function