La respuesta de glenviewjeff me llevó a la mayor parte del camino, pero la identificación de la sesión no siempre es 1. Si intenta desconectar la sesión de escucha o de la consola de esta manera, obtendrá un "Error 7045": se ha denegado el acceso a la sesión solicitada, o si el la identificación de la sesión no existe un error de SessionID no encontrado.
Hice un pequeño archivo por lotes para sacar la sesión actual. Cuando hice esto en Windows XP, necesitaba qwinsta en lugar de consultar la sesión para averiguar la ID actual. Este archivo por lotes utiliza utilidades de línea de comandos de Unix, yo uso Gnu en Windows ( https://github.com/bmatzelle/gow/downloads ) para tener acceso a estos. Extrae la sesión actual buscando un signo ">" y luego lo reasigna a la sesión de la consola.
for /f %%i in ('qwinsta ^| grep "^>" ^| awk "{print $4}"') do set VAR=%%i
tscon %var% /dest:console
Necesitaba esto para una máquina que está conectada a un escáner Fujitsu IX500, el escáner solo escanea si la pantalla no está en la pantalla de selección de nombre de usuario / inicio de sesión en Windows, que es lo que obtiene cuando cierra la sesión o desconecta una sesión normalmente. Como la máquina funciona sin una pantalla, quiero poder conectarme a través de rdp, pero si lo hiciera, no podría usar el botón de escaneo de hardware hasta que inicie sesión manualmente o reinicie. El archivo por lotes anterior resuelve este problema.