Powershell script to test RDP is available

rated by 0 users
This post has 7 Replies | 4 Followers

Not Ranked
Posts 5
Patrick Posted: 09-12-2012 12:02 PM

I am looking to write a script to test a server to see if the RDP port is available. Is there a way to do so?

Top 75 Contributor
Posts 38

First you want to make sure the computer is Pingable. Here is a "Pingable" snipit (https://snipt.net/dvsit/fastpingable/). Once you know it is pingable then test the port.

But check the registry if you can: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server value fDenyTSConnection

 

(http://blogs.technet.com/b/jamesone/archive/2009/01/31/checking-and-enabling-remote-desktop-with-powershell.aspx)

Top 10 Contributor
Posts 1,762
Microsoft MVP
Top Contributor

Hi,

can you explain why try to ping at first, please?

Ping is a command sent on ICMP protocol which is by default disabled on most corporate networks because of secutiry reasons (at least at incoming nodes, ping amplification attacks), and AFAIK blocked by firewall on Windows 7 by default. The RDP service is listening on TCP 3389 by default. Of course trying to connect to the service and recieving logon error or connection is the best test but it should be ok to test if the port is listening.

the process of testing a port over network is documented here:

http://www.jonathanmedd.net/2011/12/testing-tcp-port-response-from-powershell.html

For local (or remote powershell) the simplest way is probably WMI documented in link to the Technet, you have posted.

Jakub

Not Ranked
Posts 3

Yo dude, there certainly is a way to do this, and the script is already written for you.

It pings, it checks the RDP port (3389) and any other ports you want to check, and it even beeps at you when it is successful.

Just follow this link:

http://poshtips.com/2013/02/12/check-rdp-availability-using-watch-rebootstatus-script/

Top 10 Contributor
Posts 1,289
Top Contributor

Another one I like is this one by Justin Dearing, Autoconnect RDP:

http://poshcode.org/3154

 

This one first pings, then automatically open an mstsc session once RDP is available.

Not Ranked
Posts 3

Nice! My wish-list for this one would be to add the capability to pass security credentials so you don't have to key in domain\user & password. I don't think that is supported and no longer allowed to be passed in clear-text using an .rdp connection file (which makes sense).

What I'm thinking would be cool is if there was a capability to pass an encrypted credentials file (e.g. http://poshtips.com/2011/03/04/import-and-export-user-credentials-in-powershell/) to speed up the logon process while somewhat maintaining security. Again, I don't think this would be supported by MSTSC but it might be possible via an API.

Top 10 Contributor
Posts 1,289
Top Contributor

Yea, when you said it I thought that might be useful. I looked for some methods to be able to facilitate this and wrote a short function that provides this functionality.

I posted it on Technet, have a look at it there:

Connect-Mstsc - Open RDP Session with credentials

 

Let me know what you think of it.

Not Ranked
Posts 3

Very cool and nice work-around there using cmdkey! I Like It!

My next thought is that I still need to securely store user credentials so I can feed them into your function to be used by cmdkey. I suppose that this could be done using the script I referenced earlier. e.g. pull the secured credentials from an encoded xml file, feed that into the connect-mstsc function and be on our merry way.

Any thoughts?

Page 1 of 1 (8 items) | RSS
Copyright 2012 PowerShell.com. All rights reserved.