# encoding: ascii # api: powershell # title: Set custom IP address # description: Set custom IP address # version: 0.1 # type: function # author: Yves Rosius # license: CC0 # function: Set-CustomIP # x-poshcode-id: 6700 # x-archived: 2017-02-09T13:59:00 # x-published: 2017-01-18T18:30:00 # # function Set-CustomIP { <# .SYNOPSIS Set network settings. .DESCRIPTION Set network settings. .EXAMPLE Set-CustomIP 192.168.1.123 .PARAMETER IPAddress Preferred IP Address. DHCP is available to set IP with DHCP. .PARAMETER DefaultGateway Preferred Default Gateway. If no value is provided, a value is calculated. .PARAMETER PrimaryDNSServer Primary DNS server. Defaults to 8.8.8.8 .PARAMETER SecondaryDNSServer Secondary DNS server. Defaults to 8.8.4.4 .PARAMETER AddressFamily Currently only available in IPv4 .PARAMETER InterfaceIndex Specify which interface using InterfaceIndex. Defaults to physical interface. #> [CmdletBinding()] Param( [Parameter(Mandatory=$True, Position=1)] [string] $IPAddress, [Parameter(Mandatory=$False, Position=2)] [string] $DefaultGateway, [Parameter(Mandatory=$False, Position=3)] [string] $PrimaryDNSServer = "8.8.8.8", [Parameter(Mandatory=$False, Position=4)] [string] $SecondaryDNSServer = "8.8.4.4", [Parameter(Mandatory=$False, Position=5)] [string] $AddressFamily = "IPv4", [Parameter(Mandatory=$False, Position=6)] [string] $PrefixLength = "24", [Parameter(Mandatory=$False, Position=7)] [string] $InterfaceIndex = (Get-NetAdapter -physical).ifIndex ) ### Removes current IP settings to avoid clutter. Get-NetIPAddress -InterfaceIndex $InterfaceIndex -AddressFamily $AddressFamily | % {Remove-NetIPAddress $_.IPAddress -Confirm:$false} Remove-NetRoute -InterfaceIndex $InterfaceIndex -Confirm:$false if ($IPAddress -eq "DHCP") { Get-NetAdapter -InterfaceIndex $InterfaceIndex | Set-NetIPInterface -Dhcp enabled break } ### If DefaultGateway not specified, calculate standard value for Default Gateway. if (!$DefaultGateway) { $IPArray = $IPAddress.split(".") $DefaultGateway = $IPArray[0] + "." + $IPArray[1] + "." + $IPArray[2] + ".1" } New-NetIPAddress ` -InterfaceIndex $InterfaceIndex ` -IPAddress $IPAddress ` -DefaultGateway $DefaultGateway ` -AddressFamily $AddressFamily ` -PrefixLength $PrefixLength ` -Confirm:$false Set-DnsClientServerAddress ` -InterfaceIndex $InterfaceIndex ` -ServerAddresses $PrimaryDNSServer, $SecondaryDNSServer }