Use Netsh to Easily Change IP Addresses

Starting in Windows 2000, Microsoft has provided a powerful utility, Netsh, that lets you display and modify the network configuration of Windows computers. You can use Netsh at the command line or in a batch file. Here's an example of how you can create a batch file that changes the IP address of the local machine.

In my environment, we don’t use DHCP in all locations. In most cases, we use static IP addresses. Using static IP addresses usually doesn’t present any problems because we rarely move desktops between locations. However, the people who use laptops usually visit multiple locations. At each location, they’ve been assigned a separate IP address. Each time they change location, they look up the appropriate network settings in a .txt file, then manually change those settings. This occasionally creates problems because they have to remember the correct steps to change their network settings and sometimes they mistakenly enter wrong numbers.

I recently devised a better solution. For each location, I created a simple batch file that the laptop users can run. Whenever they want to change their IP settings, all they have to do is execute the appropriate batch file.

The batch file uses the Netsh utility and contains only three commands. The first command

changes the TCP/IP interface. The first parameter sets the interface’s name. The name in this parameter needs to match the name specified in the interface’s Network Connection Properties page. Although local area connection is typically the name for the first interface, it might be different on your laptop, so you should check the properties page. Note that when a name includes embedded spaces, you need to enclose the name in quotes.

The second and third parameters set the location’s static IP address and the subnet mask for that IP address, respectively. In these parameters, you need to replace static_ip_address and subnet_mask with your static IP address and subnet mask.

The last parameter configures the default gateway. You need to replace gateway_ip with the IP address of your default gateway. The 1 at the end specifies the metric for the default gateway. Typically, a metric of 1 is configured on all installed network adapters.

sets the secondary DNS server’s settings. You need to replace secondary_dns_ip with the IP address your secondary DNS server. The index=2 parameter specifies the position of the specified server, which in this case is 2. If you were to add a third DNS server, you’d include this command again—only this time, you’d specify the third DNS server’s IP address and change the index number to 3.

Although Netsh has been around for a while (Microsoft started including Netsh in Windows 2000), it isn’t the easiest utility to use because it has so many commands and options. You can get help with Netsh by opening cmd.exe and running the command

netsh.exe

after which you’ll get a netsh prompt. If you type a question mark (?) after the prompt, you’ll get a list of available commands and how to get syntax information for them. You can also find Netsh documentation in the “Using Netsh” Web page (www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/netsh.mspx). After you create the batch file, you need to give it an appropriate name and place it on the users’ desktops. Now whenever the users want to change their IP settings, all they have to do is run the batch file.

Note that users must have the necessary rights to their computer to run the batch file. They don’t need to be a local administrator, though. Putting them in their computer’s Network Configuration Operators group is adequate. (For more information about this group and its rights, read the Microsoft article “A Description of the Network Configuration Operators Group” at support.microsoft.com/kb/297938).

Discuss this Article 1

Alan (not verified)

on Nov 10, 2007

I can appreciate the usefulness in your non DHCP environment. Could you come up with a similar solution which would attribute a different IP than the current dynamically associated IP address. We have an application which blocks by IP address after 3 incorrect logons, and getting the machine unblocked is a tiring and time-consuming event. For quickness, I usually either manually reset the IP into the non-DHCP range, or use the IPCONFIG /RELEASE command, attribute the 'bad' IP to another machine, then use IPCONFIG /RENEW. Being able to do this using NETSH would be very nice, if possible.