## Find an unused port Param ( [string] $ServerToCheck, [string] $PortsToExclude ) $PortsUsed = $PortsToExclude.Split(",") $PortArray = ((5022..5025), (7022..7025), (5026..6000), (7026..8000)) $socket = new-object System.Net.Sockets.TcpClient $PortAvailable = 0 foreach ($Ports in $PortArray) { foreach ($Port in $Ports) { if ($PortsUsed -notcontains $Port) { $erroractionpreference = "SilentlyContinue" $socket.Connect($ServerToCheck, $Port) if (!$socket.Connected) { $PortAvailable = $Port $erroractionpreference = "Continue" $error.clear() $socket.Close() break } else { $socket.Disconnect() } } } if ($PortAvailable -ne 0) { break } } write-host " Port $PortAvailable appears to be available" -f green return $PortAvailable