Very simply returns True or False for a given list of hostnames or IP addresses depending on whether or not it can connect to TCP/3389 – a successful connection does not mean that you will be able to login, of course. If you’re running RDP on a non-standard port, you’ll need to adjust the script appropriately.
param( [parameter(Mandatory=$true,ValueFromPipeline=$true)][string[]]$computername ) $results = @() foreach($name in $computername){ $result = "" | select Name,RDP $result.name = $name try{ $socket = New-Object Net.Sockets.TcpClient($name, 3389) if($socket -eq $null){ $result.RDP = $false }else{ $result.RDP = $true $socket.close() } } catch{ $result.RDP = $false } $results += $result } return $results |
This script is useful, but it doesn’t have to be RDP specific. If you accept the port number as a parameter you can test any TCP port/service.
I’ve written my own TCP port test in Powershell to work like a ping style test. It’s at http://www.craigdodd.co.uk/2012/05/ping-tcp-powershell-script/ if you’re interested.
I know, I just had a need to test RDP connectivity on a couple of servers at work and knocked something up quickly to do it.
I want to know if it’s possible to test the login in RDP ! Have you an idea ?
I don’t think there’s any easy way to programmatically login interactively over RDP.