Pinterest Stumbleupon Whatsapp
Advertisement

change network settings scriptThis week, I stumbled across an interesting problem. In many offices or work environments, you might need to redefine your network settings to connect to different networks. For example, some people take their laptop home with them and have a static IP set up specifically for that machine. However, since the work network is usually DHCP, that requires the person to keep changing the network settings between a static IP or automatic DHCP depending where they are.

A more common problem is for engineers or IT staff that often need to connect to devices or machines on a small network within a building. To connect to that isolated network, you have to change your network settings to a static IP. Later, when you reconnect to the corporate network, it’s back to DHCP again.

I found myself in this situation often enough, and got so tired of browsing to the network card, opening up the IP settings and making those edits, that I decided it was high time to put together a VB script that would do it all in one or two clicks.  If you’ve followed along with my programming articles, then you know that I love VB scripts. I once used it to create a possessed computer Create A Freaky Possessed Computer With Windows Script For Halloween Create A Freaky Possessed Computer With Windows Script For Halloween There are a lot of fun pranks you can play on your friends with a computer. You've probably seen all of those creepy YouTube videos that people forward to each other for a good scare.... Read More , and also used to to automate Microsoft SyncToy How To Create A Data Backup Tool With SyncToy & VB Script How To Create A Data Backup Tool With SyncToy & VB Script We've covered a lot of backup solutions here at MUO, and all of these solutions are great, but if you're working in an environment that is wary about free 3rd party software packages, or companies... Read More for data backups.

It’s also possible to accomplish this task with VB script, and it’s even possible to make it flexible enough so that it can accept user input for the static IP address. In this article, I’ll show you how to do it in three sections.

Creating a Network Setting Change Script

There are three main tasks you need to accomplish with the script in order to create this little app for switching network settings. The first is to use the script to create static IP settings. The next is to come up with a script to enable DHCP. Finally, the last is to ask the user which task they want to do, and then use that feedback to accomplish it.

VB Script to Set Static IP Settings

Remember, the following scripts need to be saved as a text file with a .wsf extension in order to work on a Windows PC. The following script will change your network settings to a static IP with a specific subnet mask and default gatewall, with all three hard coded into the script.

Advertisement

For all code samples listed in this article, make sure to add “<job><script language=”VBScript”>” at the beginning and “</script></job> at the end, otherwise the code won’t run.
Here’s the static IP change script:

Option Explicit

On Error Resume Next

Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim arrIPAddress
Dim arrSubnetMask
Dim arrGateway
Dim colNetAdapters
Dim errEnableStatic
Dim errGateways

strComputer = "."

arrIPAddress = Array("192.168.1.106")
arrSubnetMask = Array("255.255.255.0")
arrGateway = Array("192.168.1.1")

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each objNetAdapter in colNetAdapters
     errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)
     If Not errEnableStatic = 0 Then
     	WScript.Echo "Failure assigning IP/Subnet."
     End If

     errGateways = objNetAdapter.SetGateways(arrGateway)
     If Not errGateways = 0 Then
     	WScript.Echo "Failure assigning Gateway."
     End If

Next
WScript.Quit

This script uses the Windows WMI service in Windows to accomplish the goal of changing settings. You can see the three fixed array variables loaded with the IP addresses, and then where the script checks for the active “enabled” network card. Then it uses the “EnableStatic” and “SetGateways” methods to make those required changes. When I run the script on my home network (where I require DHCP), you can see where the script successfully changed my adapter settings, and I’ve lost my Internet connection.

Having proved that the static-IP part of the script works, it’s time to write the script that will set the adapter to DHCP so it’ll automatically detect the network IP. Here’s the script that you can use to do that.

Option Explicit

On Error Resume Next

Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim errEnable

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each objNetAdapter in colNetAdapters
     errEnable = objNetAdapter.EnableDHCP()
Next

WScript.Quit

As you can see, this script is a lot simpler. It also uses WMI, but the only function required is “EnableDHCP”. This is performed on the currently enabled network adapter. After saving and running this script, my adapter card settings changed back to DHCP, and my Internet connection was working again.
change network settings script
So, now that you’ve got the code to perform both of the important actions, the next part of this trick will be to take input from the user to determine exactly what static IP they want. To re-enable DHCP, you can require the user to enter the word “AUTO” for automatically detect the IP.
Here’s what this new, full script incorporating the two scripts above looks like.

Option Explicit

On Error Resume Next

Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim arrIPAddress
Dim arrSubnetMask
Dim arrGateway
Dim colNetAdapters
Dim errEnableStatic
Dim errGateways
Dim strInput
Dim errFailed

errFailed = 0

strInput = InputBox("Type Static IP Address or AUTO")

If strInput = "AUTO" Then

	strComputer = "."
	Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
	Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

	For Each objNetAdapter in colNetAdapters
	     errEnable = objNetAdapter.EnableDHCP()
	     If Not errEnable = 0 Then
	     	WScript.Echo "Setting DHCP Failed."
		errFailed = 1
	     End If
	Next
Else
	strComputer = "."
	arrIPAddress = Array(strInput)
	arrSubnetMask = Array("255.255.255.0")
	arrGateway = Array("192.168.1.1")

	Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
	Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

	For Each objNetAdapter in colNetAdapters
	     errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)
	     If Not errEnableStatic = 0 Then
	     	WScript.Echo "Failure assigning IP/Subnet."
		errFailed = 1
	     End If

	     errGateways = objNetAdapter.SetGateways(arrGateway)
	     If Not errGateways = 0 Then
	     	WScript.Echo "Failure assigning Gateway."
		errFailed = 1
	     End If

	Next

End If

If errFailed = 0 Then

	WScript.Echo "IP Settings Successfully Modified."

End If

WScript.Quit

This script uses the InputBox function to get either the static IP or the “AUTO” command from the user.
change network settings script

If anything other than “AUTO” is typed into the field, that will be used as the static IP string in the section of code that uses WMI to set the static IP settings for the network adapter. There’s also a check for the “0” confirmation saying everything went okay.

script to change network settings

Checking my network card settings after running the script, I confirmed that the script did in fact make the static IP setting changes.
script to change network settings
Now to test the AUTO script. Typing AUTO satisfies the first condition in the “IF” statement checking for AUTO. This runs the alternate script that enables DHCP.

script to change network settings

After running this, I went into my adapter settings and sure enough, it was set back to Obtain an IP address automatically.
script to change network
While it may be a simple enough task to go into your network card settings and change to static or DHCP, if you have to do it really often it can become a real pain. You could do it from a command line using “netsh”, but again, you need to remember the command syntax.

Using the script above allows you to build a quick and easy utility that you can use anytime to switch your network settings on the fly.

Think you might give this Windows Script a try? Any other ideas to tweak it and make it even better? Share your thoughts and suggestions in the comments section below.

Image Credit:Binary Codes via Shutterstock

Leave a Reply

Your email address will not be published. Required fields are marked *