Software

10 PowerShell cmdlets to speed network troubleshooting

The right PowerShell cmdlets can help you identify network issues and resolve connectivity problems quickly and easily. Here are 10 to get you started.

gorodenkoffistock-899720520.jpg

Image: iStock/gorodenkoff

As Microsoft releases newer versions of its Windows client and server OSes, it continues to double down on PowerShell (PS), the framework developed for managing systems and automation. With its ever-expanding list of commands, called cmdlets, PS is poised to aid in configuring just about any settings found within Windows.

While PS boasts a vast number of cmdlets, thankfully most are grouped based on functionality or the service they manage. For the purposes of this article, the cmdlets that pertain to managing network-based settings are all found within the base PowerShell framework.

SEE: Windows administrator's PowerShell script kit (Tech Pro Research)

Before diving into the cmdlets, there are a few requirements that must be met to ensure that all cmdlets are available and fully supported:

  • PC with Windows Vista installed (or newer)
  • Windows Management Framework 3.0 (or newer)
  • Switched network (required for most cmdlets to function properly)
  • Broadband internet access (optional, but recommended)

1. Ping devices locally or remotely

Test-NetConnection -ComputerName "Hostname or IP"

The Test-NetConnection cmdlet offers a number of ways to test network connectivity on the LAN and WAN. Enter the command as typed above and the computer will essentially perform a ping to determine if network connectivity between the local device and the target computer or domain exists.

2. Check connectivity based on port or service

Test-NetConnection "Hostname" -Port #

Another feature of the Test-NetConnection cmdlet is the ability to test the connectivity between the local device and the target host by specifying a port number. This is extremely useful for testing services between devices and the ports they communicate on specifically.

3. Trace route communications

Test-NetConnection "Hostname" -traceroute

Performing a trace route to determine how many hops (or steps) a packet must go through to get from the source to its destination is an important tool, as it allows you to see where the transmission is going, and more important, whether it was successful. If it wasn't, trace route will indicate where the packet failed along the path.

SEE: IT pro's guide to saving time with PowerShell (free TechRepublic PDF)

4. Obtain IP configuration details

Get-NetIPConfiguration

Similar to the ipconfig command, the Get-NetIPConfiguration cmdlet provides a holistic view of the network configuration(s) set on the network adapters of a computer. IP, DNS, and Gateway addresses are displayed and sorted by adapter name.

5. Perform DNS lookups

Resolve-DnsName -Name "Hostname"

Arguably, the backbone of a network is the DNS service. Without it, users would be forced to know the IP addresses for all websites and services. And yet when connectivity issues arise, DNS is often the culprit after ruling out IP-related errors. By appending the "-server" switch, followed by a DNS server's IP address, IT can perform a DNS resolve request against a specific server to verify resolution is working properly.

6. View current TCP connections

Get-NetTCPConnection

Just like netstat before it, the Get-NetTCPConnection cmdlet allows for viewing of the current TCP connections that have been made to/from a device, as well as open or listening connections. This helps you troubleshoot issues that pertain to IPs and ports, specifically those bound to certain network services.

7. View & Set DNS information

Get-DnsClient
Set-DnsClientServer Address

This cmdlet lets you check the DNS client information for a device. It will indicate what DNS server(s) are being used by the device to perform address resolutions as configured on multiple adapters. The Set-DnsClientServerAddress cmdlet allows for specified DNS servers to be added to the network configuration.

8. Flush DNS cache

Clear-DnsClientCache

The DNS cache helps keep often used DNS resolution records stored locally on a device, allowing it to read that record instead of performing a lookup every time a record is requested. This helps speed up the already fast resolution process. If stale records—or those that haven't been updated—are present, this could lead to poor network performance, denial of service, or security issues that seek to exploit incorrect records that point user requests to the wrong server/service.

9. Release and renew DHCP leases

Invoke-Command -ComputerName -ScriptBlock {ipconfig /release}
Invoke-Command -ComputerName -ScriptBlock {ipconfig /renew}

While PowerShell includes many cmdlets to manage network settings, there is no direct way to release/renew DHCP leases without referencing another cmdlet first, then piping the results to a second or third cmdlet to be able to modify the DHCP setting. However, by leveraging the Invoke-Command, you can remotely (or via script) perform a release and/or renew by calling upon the ipconfig command.

10. Disable and enable network adapters

Disable-NetAdapter -Name "Adapter Name"
Enable-NetAdapter -Name "Adapter Name"

Last but certainly not least is the cmdlet for disabling/enabling network adapters on a device. While not as fancy a method for troubleshooting network problems as the cmdlets listed above, as any IT professional will tell you, sometimes the only thing you have to do to resolve a network-based problem is turn it off and on again.

Other options?

What PowerShell cmdlets have worked best for your network troubleshooting tasks? Share your experiences and advice with fellow TechRepublic members in the discussion below.

About Jesus Vigo

Jesus Vigo is a Network Administrator by day and owner of Mac|Jesus, LLC, specializing in Mac and Windows integration and providing solutions to small- and medium-size businesses. He brings 19 years of experience and multiple certifications from seve...

Editor's Picks

Free Newsletters, In your Inbox