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 /sm
pará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:
Get-TSSession -ComputerName servidor1 -Estado activo | Desconectar-TSSession -WhatIf