Posted On August 13, 2020

PowerShell: Alternative to Test-NetConnection for Legacy Windows

kimconnect 0 comments
blog.KimConnect.com >> Codes , Networking >> PowerShell: Alternative to Test-NetConnection for Legacy Windows

This little snippet is useful as a helper function to quickly determine port connectivity between different nodes. Although the included Test-NetConnection of PowerShell version 5+ already serves this purpose, this legacy method includes the feature to control timeouts so that it is faster to return results. Moreover, only one connection is made to assess active targets, whereas the newer Test-NetConnection makes two contacts to determine live nodes. In short, System.Net.Sockets.TcpClient (a function from the DotNet 3+ library) is more efficient and could be used in lieu of the PowerShell standard command.

function Check-NetConnection($computername,$port,$timeout=200,$verbose=$false) {
            $tcp = New-Object System.Net.Sockets.TcpClient;
            try {
                $connect=$tcp.BeginConnect($computername,$port,$null,$null)
                $wait = $connect.AsyncWaitHandle.WaitOne($timeout,$false)
                if(!$wait){
                    $null=$tcp.EndConnect($connect)
                    $tcp.Close()
                    if($verbose){
                        Write-Host "Connection Timeout" -ForegroundColor Red
                        }
                    Return $false
                }else{
                    $error.Clear()
                    $null=$tcp.EndConnect($connect) # Dispose of the connection to release memory
                    if(!$?){
                        if($verbose){
                            write-host $error[0].Exception.Message -ForegroundColor Red
                            }
                        $tcp.Close()
                        return $false
                        }
                    $tcp.Close()
                    Return $true
                }
            } catch {
                return $false
            }
    }

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

PowerShell: List Biggest Files and Folders on a Volume

# listBigFilesAndFolders-v0.01.ps1 # Set variables $parentDirectory="C:\" $depth=4 $topX=10 $excludeDirectories="C:\Windows","C:\Program Files","C:\Program Files (x86)" $clusterSizeOfNetworkShare=8192 # Sanitize…

Start All Automatic Services on Windows

Current version: # startAllAutoServices.ps1 # version 0.0.2 # Description: # - This script to scan…

How To Copy Folder in Legacy Windows with Long File Names?

$sourceDirectory='D:\SMBSHARE\LONGPATH' $destinationDirectory='\\FILESERVER\LONGPATH' function copyFolderWithLongNames($sourceDirectory,$destinationDirectory){ $sourceParent=split-path $sourceDirectory -parent $sourceChild=split-path $sourceDirectory -leaf $destinationParent=split-path $destinationDirectory -parent $destinationChild=split-path $destinationDirectory…
Other project: DragonCoin.com