Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '----------------------------------------------------------------------------------------------------------------------------
- 'Script Name : EnableDHCP.vbs
- 'Author : Matthew Beattie
- 'Created : 29/12/10
- 'Description : This script enables DHCP for systems on specified subnets.
- '----------------------------------------------------------------------------------------------------------------------------
- 'Initialization Section
- '----------------------------------------------------------------------------------------------------------------------------
- Option Explicit
- Dim objFSO, wshShell, wshNetwork, hostName
- On Error Resume Next
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- Set wshNetwork = Wscript.CreateObject("Wscript.Network")
- Set wshShell = CreateObject("Wscript.Shell")
- hostName = wshNetwork.ComputerName
- ProcessScript
- If Err.Number <> 0 Then
- Wscript.Quit
- End If
- On Error Goto 0
- '----------------------------------------------------------------------------------------------------------------------------
- 'Name : ProcessScript -> Primary Function that controls all other script processing.
- 'Parameters : None ->
- 'Return : None ->
- '----------------------------------------------------------------------------------------------------------------------------
- Function ProcessScript
- Dim ipAddress, macAddress, product, systems, system
- Dim subnets, subnet, network, continue
- product = ReadRegistry("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProductName")
- systems = Array("Windows XP","Windows 7")
- subnets = Array("192.168.10.0", "192.168.20.0","192.168.30.0","192.168.60.0","192.168.70.0","192.168.71.0","192.168.90.0", "192.168.91.0")
- '-------------------------------------------------------------------------------------------------------------------------
- 'Ensure this script only applies to client operating systems. (Don't configure servers with DHCP!)
- '-------------------------------------------------------------------------------------------------------------------------
- Continue = False
- For Each system In systems
- If InStr(1, product, system, vbTextCompare) <> 0 Then
- continue = True
- Exit For
- End If
- Next
- If Not continue Then
- Exit Function
- End If
- '-------------------------------------------------------------------------------------------------------------------------
- 'Enumerate the IP and MAC Addresses from the local system.
- '-------------------------------------------------------------------------------------------------------------------------
- If Not GetIPConfig(hostName, ipAddress, macAddress) Then
- Exit Function
- End If
- '-------------------------------------------------------------------------------------------------------------------------
- 'Ensure the script continues processing only if the systems IP address is within the specified subnets.
- '-------------------------------------------------------------------------------------------------------------------------
- network = Left(ipAddress, InStrRev(ipAddress, ".")) & "0"
- continue = False
- For Each subnet In subnets
- If StrComp(subnet, network, vbTextCompare) = 0 Then
- continue = True
- Exit For
- End If
- Next
- '-------------------------------------------------------------------------------------------------------------------------
- 'Ensure the script only continues processing if the systems IP address is within the specified subnets.
- '-------------------------------------------------------------------------------------------------------------------------
- If Not continue Then
- Exit Function
- End If
- '-------------------------------------------------------------------------------------------------------------------------
- 'The system is within one of the specified subnets. Enable DHCP on all enabled interfaces that have static IP Addresses.
- '-------------------------------------------------------------------------------------------------------------------------
- If Not EnableDHCP Then
- Exit Function
- End If
- End Function
- '----------------------------------------------------------------------------------------------------------------------------
- 'Name : ReadRegistry -> Read the value of a registry key or value.
- 'Parameters : key -> Name of the key (ending in "\") or value to read.
- 'Return : ReadRegistry -> Value of key or value read from the local registry (blank is not found).
- '----------------------------------------------------------------------------------------------------------------------------
- Function ReadRegistry(ByVal key)
- Dim result
- If StrComp (Left (key, 4), "HKU\", vbTextCompare) = 0 Then
- Key = "HKEY_USERS" & Mid (key, 4)
- End If
- On Error Resume Next
- ReadRegistry = WshShell.RegRead (key)
- If Err.Number <> 0 Then
- ReadRegistry = ""
- End If
- On Error Goto 0
- End Function
- '----------------------------------------------------------------------------------------------------------------------------
- 'Name : GetIPConfig -> Enumerates the IP & MAC Address of the system via WMI
- 'Parameters : hostName -> String containing the hostname of the computer to enumerate the IP configuration for.
- ' : ipAddress -> Input/Output : Variable assigned to the IP Address of the system.
- 'Parameters : macAddress -> Input/Output : Variable assigned to the MAC Address of the system.
- 'Return : GetIPConfig -> Returns True and the systems IP & MAC Address if successful otherwise returns False.
- '----------------------------------------------------------------------------------------------------------------------------
- Function GetIPConfig(hostName, ipAddress, macAddress)
- Dim wmi, ipConfig, query
- GetIPConfig = False
- ipAddress = ""
- macAddress = ""
- query = "select * from Win32_NetworkAdapterConfiguration where IPEnabled = True"
- On Error Resume Next
- Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & hostName & "\root\cimv2")
- If Err.Number <> 0 Then
- Exit Function
- End If
- For Each ipConfig in wmi.ExecQuery(query)
- If Err.Number <> 0 Then
- Exit Function
- End If
- ipAddress = ipConfig.IPAddress(0)
- macAddress = ipConfig.MACAddress(0)
- If ipAddress <> "" And ipAddress <> "0.0.0.0" And MACAddress <> "" Then
- Exit For
- End If
- Next
- On Error Goto 0
- GetIPConfig = True
- End Function
- '----------------------------------------------------------------------------------------------------------------------------
- 'Name : EnableDHCP -> enables DHCP on all interfaces that have static IP Addresses.
- 'Parameters : hostName -> String containing the hostname of the system to enable DHCP on.
- 'Return : EnableDHCP -> Returns True if DHCP was enabled otherwise False.
- '----------------------------------------------------------------------------------------------------------------------------
- Function EnableDHCP
- Dim query, wmi, adapter, adapters, result
- EnableDHCP = False
- query = "Select * From Win32_NetworkAdapterConfiguration Where DHCPEnabled = False And IPEnabled = True"
- On Error Resume Next
- Set wmi = GetObject("winmgmts:\\" & hostName & "\root\cimv2")
- Set adapters = wmi.ExecQuery(query)
- For Each adapter In adapters
- result = adapter.EnableDHCP()
- Next
- If Err.Number <> 0 Then
- Exit Function
- End If
- On Error Goto 0
- EnableDHCP = True
- End Function
- '----------------------------------------------------------------------------------------------------------------------------
- '----------------------------------------------------------------------------------------------------------------------------
- '----------------------------------------------------------------------------------------------------------------------------
- '----------------------------------------------------------------------------------------------------------------------------
- strComputer = "."
- NewName="NewName"
- set wshShell= wscript.CreateObject("Wscript.Shell")
- Set objWMIService = GetObject _
- ("winmgmts:\\" & strComputer & "\root\microsoft\homenet")
- Set colItems = objWMIService.ExecQuery("Select * from HNet_Connection")
- For Each objItem in colItems
- if (objItem.IsLANConnection) then
- Set ExecResult = wshShell.Exec("netsh interface ip set address name = " &chr(34)&objItem.Name &chr(34)& " source=dhcp ")
- 'ждем когда выполнится
- Do While ExecResult.Status = 0
- WScript.Sleep 100
- Loop
- 'После завершения переходим к следующей
- Set ExecResult = wshShell.Exec("netsh interface ip set dns name = " &chr(34)&objItem.Name &chr(34)& " source=dhcp ")
- 'ждем когда выполнится
- Do While ExecResult.Status = 0
- WScript.Sleep 100
- Loop
- 'После завершения переходим к следующей
- Set ExecResult = wshShell.Exec("netsh interface ip set wins name = " &chr(34)&objItem.Name &chr(34)& " source=dhcp ")
- 'ждем когда выполнится
- Do While ExecResult.Status = 0
- WScript.Sleep 100
- Loop
- ' и т.д.
- end if
- Next
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement