Sunday, April 5, 2015

Foreward

I haven't located a good cheat sheet for basic PowerShell commands to
manage your Network Card/IP stack, so I thought I should make one. If you
like this please share it with your mom because I'm sure she's been
waiting to set a static IP address via PowerShell for some time. Also you
should call her more.

My campaign against stock photography
continues.

Assumptions

Windows 2012/Windows 8 or higher

Administrator access to the machine in question

Powershell ran as administrator on the machine in question

CMDLet List:

Most of the commands used to manipulate IP settings can be found by
typing Get-Command -Module NetTCPIP

Common Tasks

Here are walkthroughs of some of the more common tasks you may want to
perform.

List Network Adapters

Gets a list of all adapters in the machine; you'll need to know your
adapter name or index # (both listed) for some of the commands below.

Get-NetAdapter

Change an Adapter Friendly Name

You may want to consider changing the friendly name of the adapter
you intend to manipulate. By giving it shorter, more meaningful name you'll
have an easier time going forward. Use the old name you got from the last
command. Syntax is Rename-NetAdapter -Name "<Current Name>"
-NewName <"New Name">

Rename-NetAdapter -Name "Local Area Connection" -NewName WiFi

Get the Current IP Address

Gets all IPv4 addresses on the machine; you'll almost always have
multiple as your loopback interface (127.0.0.1) will be listed. Ignore that
guy.

Get-NetIPAddress -AddressFamily ipv4

Optionally, you can specify -InterfaceAlias <friendly name>
or -InterfaceIndex <index #> to limit the command to a single adapter.

Assign a Static IP Address to your Network Adapter

This command will set the one and only (overwriting what is there)
IP address for the specified network adapter. You also can (and should) set
the subnet mask with this command. The subnet mask is set via CIDR
using the -PrefixLength; see the link for more info about CIDR, but if
you're not familiar with CIDR it is likely that you want -PrefixLength 24
which translates to 255.255.255.0 meaning the first three octets are the
network while the last is the host. Syntax is New-NetIPAddress
-InterfaceAlias <name> -IPAddress <IP address> -PrefixLength
<CIDR> -DefaultGateway <Gateway IP> . You can
substitute -InterfaceIndex <index #> for -InterfaceAlias
.

Note: You will get an error if you already have a
static IP address with a default gateway. To fix this problem see "Delete
Existing Static IP" below and then try again. Note2: We're not using "Set-NetIPAddress" here because it
doesn't allow you to set a default gateway. BOOOO.

Set DNS Servers for your Adapter

To look up names you'll need to set DNS server(s). Syntax is Set-DNSClientServerAddress
-InterfaceAlias <name> -ServerAddresses ("<IP Address 1","IP
Address 2") . You can set as many DNS servers as you like. You can
substitute -InterfaceIndex <index #> for -InterfaceAlias
.

Set a Default Gateway

It's generally easier to set the default gateway as part of the
New-NetIPAddress command above, but if you want to set one separately see
"Set a Static Route" below.

Delete Existing Static IP (to prep for a new)

This is a two step process; you need to delete the IP, then the
gateway. No need to worry about the DNS servers here as it works to
overwrite them with the command above. You will need to know the IP address
you want to delete first; use get-netipaddress (above) to get it
(write it down to use below if necessary). You'll then need to know the
NextHop of the gateway. To get this, use the get-netroute command
and write down the entry(ies) that have a nexthop of the gateway you intend
to remove (see screenshot).

Note: If you have a static gateway set you'll
need to perform the second step "Remove-NetRoute" from the step
above as well.

Advanced Tasks

Here are walkthroughs of some of the more common tasks you may want to
perform. My assumption here is that you know what you want to do so I won't
be discussing the details of what each of these means.

Add/Delete a Static Route

Add: (use -RouteMetric to specify metric or -PolicyStore to control
persistence through reboots)

Test Network Connectivity (Ping)

Test-Connection replaces ping.exe. In addition to the ping
functionality Test-Connection supports authentication (if firewall is set
accordingly), multiple targets in a single command, running as a job, as
well as more detailed returns.

Test-Connection myhost.mydomain.com

Assign a DNS Suffix

This is the domain under which your IP will be registered and under
most circumstances will be used to append to hostname searches. Note this is
per-adapter. You can substitute InterfaceIndex for InterfaceAlias
if you like.