Scripting: ¿Cómo desconectar las sesiones de Escritorio remoto?

Scripting: ¿Cómo desconectar las sesiones de Escritorio remoto?

Estoy buscando una manera de cerrar todas las sesiones activas de Escritorio remoto en una computadora (computadora local). Windows incluye un par de comandos (rwinsta, qwinsta, etc.) para ver las sesiones activas, pero no veo cómo podría usar fácilmente la información (a menos que analice la cadena...) para cerrar todas las sesiones.

¿Hay alguna manera en Powershell (o C#, Batch) de cerrar todas las sesiones de Escritorio remoto en una computadora local?

gracias martin

Respuesta1

Podrías intentar usar el /smparámetro no documentado para query session(en un archivo por lotes) para ordenar las cosas más fácilmente:

FOR /f %%G IN ('query session /sm') DO tsdiscon %%G

Respuesta2

Sí, usando tsdiscon desde una línea de comando:

tsdiscon n

donde la n debe reemplazarse con la identificación de la sesión.

Puede obtener el número de sesión de

query session

Ya que dices que quieres cerrartodosesiones en la computadora local, supongo que deberá tener cuidado con el orden en que lo hace (es decir, cerrar la sesión al final).

Respuesta3

Puedes usar eltsdisconUtilidad para desconectar sesiones. Si utiliza el comando "consultar sesiones" desde un símbolo del sistema, puede ver la lista de ID y luego emitir un comando tsdiscon para cada uno.

Una construcción de bucle como esta debería funcionar

FOR /f %%G IN ('q.bat') DO tsdiscon %%G

donde q.bat es

query session /sm | find "Active"

Eso sólo desconectará las sesiones remotas e ignorará al usuario de la consola.

Respuesta4

Puede utilizar el módulo PSTerminalServices PowerShell:

http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2010/02/22/psterminalservices-powershell-module-for-terminal-services.aspx

Get-TSSession -ComputerName servidor1 -Estado activo | Desconectar-TSSession -WhatIf

información relacionada