Here is the network interface configuration script, which doing the following tasks:

checking the range of IP address and configuring gateway, mask accoring it’s range. If IP address out of range, the script will end.

Configure DNS suffix and DNS servers

Configure IP settings on selected network adapter

#.1.0 subnet gw $ip_gw_1_0_subnet="192.168.1.1" #.2.0 subnet gw $ip_gw_2_0_subnet="192.168.2.1" #dns settings $ip_dns_1="192.168.1.2" $ip_dns_2="192.168.1.3" $ip_DNS_Suffix = "adatum.local" #function to compare IP address within the range function IsIpAddressInRange { param( [string] $ipaddress, [string] $begin_range, [string] $end_range ) $ip = [system.net.ipaddress]::Parse($ipAddress).GetAddressBytes() [array]::Reverse($ip) $ip = [system.BitConverter]::ToUInt32($ip, 0) $from = [system.net.ipaddress]::Parse($begin_range).GetAddressBytes() [array]::Reverse($from) $from = [system.BitConverter]::ToUInt32($from, 0) $to = [system.net.ipaddress]::Parse($end_range).GetAddressBytes() [array]::Reverse($to) $to = [system.BitConverter]::ToUInt32($to, 0) $from -le $ip -and $ip -le $to } Write-Host "Configuring network interface" Write-Host "" Write-Host "List all available interfaces" $NIC = get-wmiobject win32_networkadapter -filter 'netconnectionstatus = 2' $NIC | select name, InterfaceIndex | Out-host #get response from user to select NIC index $int_id=read-host "Enter interface index to configure: " #Current IP configuration Write-Host "Current IP address " (Get-NetIPAddress -InterfaceIndex $int_id -AddressFamily IPv4) $ip_addr=read-host "Enter IP address: " #remove old IP address and gw if they already exist Remove-NetIPAddress((Get-NetIPAddress -InterfaceIndex $int_id).IPAddress) -Confirm:$false if (Get-NetIPConfiguration | where {$_.IPv4DefaultGateway -ne $null}) { Remove-NetRoute -InterfaceIndex $int_id -Confirm:$false } #Configure IP address if (IsIPAddressInRange $ip_addr "192.168.1.1" "192.168.1.254") { New-NetIPAddress -interfaceIndex $int_id -IPaddress $ip_addr -PrefixLength 24 -DefaultGateway $ip_gw_1_0_subnet &gt; $null } #If you need to do more check, add "elseif" elseif (IsIPAddressInRange $ip_addr "x.x.x.x" "x.x.x.x") { New-NetIPAddress -interfaceIndex $int_id -IPaddress $ip_addr -PrefixLength 24 -DefaultGateway $ip_gw_2_0_subnet &gt; $null } else { Write-Host "You've entered IP address which is out of range. Please restart this script" -ForegroundColor Red exit } #Configure DNS servers Set-DnsClientServerAddress -interfaceIndex $int_id -ServerAddresses $ip_dns_1, $ip_dns_2 #set primary DNS suffix Write-Host "Setting up DNS servers and primary DNS suffix to qualityserver.de" Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name Domain -Value $ip_dns_suffix Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\" -Name "NV Domain" -Value $ip_dns_suffix

To run this script on Windows 2012 R2 server, you have to modify it a little bit

Write-Host "Configuring network interface" Write-Host "" Write-Host "List all available interfaces" get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" | select netconnectionid, name, InterfaceIndex, netconnectionstatus #get response from user to select NIC index $int_id=read-host "Enter interface index to configure: " #Current IP configuration Write-Host "Current IP address " (Get-NetIPAddress -InterfaceIndex $int_id -AddressFamily IPv4) $ip_addr=read-host "Enter IP address: " #remove old IP address and gw if they already exist Remove-NetIPAddress((Get-NetIPAddress -InterfaceIndex $int_id).IPAddress) -Confirm:$false if (Get-NetIPConfiguration | where {$_.IPv4DefaultGateway -ne $null}) { Remove-NetRoute -InterfaceIndex $int_id -Confirm:$false }