venerdì 18 aprile 2014

Resettare sessioni RDP da remoto

Nel mio lavoro utilizzo molto il servizio Remote Desktop (Terminal Services) di Microsoft per accedere da remoto a sistemi Windows.
Tale servizio è incluso gratuitamente nel sistema operativo per un utilizzo contemporaneo di due sessioni. Se se ne vogliono di più bisogna pagare ulteriormente Microsoft.
In tanti posti si utilizzano le due sessioni gratuite, ma accade che esse rimangano occupate.
Le sessioni rimangono occupate quando per uscire si chiude l'applicazione con la X e non si fà il logoff (Disconetti). Può succedere che il nostro PC locale si spenga bruscamente, o ci sia una caduta della LAN o altri accidenti che possano fare in modo noi non diamo correttamente il comando Logoff.


Ci troveremo ad un certo punto che connettendoci ci tornerà il messaggio che le sessioni disponibili sono esaurite e la finestra di Remote Desktop si chiuda.
Per risolvere il problema bisogna andare fisicamente di fronte la macchina, accedere, aprire Programmi -> Pannello Dio controllo .> administrative Tools -> Terminal Sevices Manager (oppure da esegui digitare tsadmin e dare invio) ; individuare al o le sessioni la cui icona è grigia , agire sui di essa con il tasto destro e scegliere Reset.

Ci sono dei casi in cui non è possibile accedere fisicamente al server  e quindi bisogna trovare delle alternative.
La prima è quella di scrivere nella finestra esegui del proprio pc mstsc /console . Ciò farà si che possiamo entrare in una terza sessione, sempre che essa sia libera, e si possano così cancellare le sessioni appese.

Se neanche questo sistema ci porta l'esito voluto, se il nostro computer è all'interno della stessa lan del server, aprire il prompt dei comandi (Avvio -> Tutti i programmi -> Accessori -> Prompt dei comandi) e digitare :
query session /server:192.168.1.2 (indirizzo IP o nome macchina del server incriminato).
Ci verrà risposto una cosa simile a:
SESSIONNAME  USERNAME    ID  STATE   TYPE        DEVICE
console                   0  Conn    wdcon
rdp-tcp                5536  Listen  rdpwd
rdp-tcp#33   utenteA      1  Active  rdpwd
rdp-tcp#77   utenteB      2  Active  rdpwd

Identifichiamo quale delle due sessioni può essere "sacrificata" e poi scriviamo:
reset session 1 /server:192.168.1.2
Nel caso volessi sacrificare l'utenteA