¿Cómo puedo recuperar el ID de sesión de usuario actual a través de la línea de comandos de Windows?
En la lista de tareas en la pestaña de usuarios, cada usuario está asociado con una ID de sesión. Quiero recuperar esto a través de la línea de comandos para poder usarlo para una aplicación remota.
windows
command-line
Negativo
fuente
fuente
Respuestas:
Ciertamente, esta no es la forma más eficiente, pero puede ver los resultados
tasklist
. Mostrará el nombre y la sesión # de cada proceso en ejecución. Si ha iniciado sesión localmente, mire la ID de la sesión llamada "consola".Editar :
Query Session
recuperará el id de sesión:fuente
tasklist
es bueno porque no requiere una versión Pro / Ent OS. También puede enumerar solo sesiones interactivas filtrando para explorer.exe -tasklist /fi "imagename eq explorer.exe"
fuente
tasklist
al mismo tiempo.Esto combina aspectos de la respuesta de Gary y la respuesta de Oscar . Como señaló Gary, la salida de se
query session
parece ao, en mi caso (usando "Cambiar usuario")
(No tengo configurado RDP, por lo que no puedo probarlo). Presumiblemente, la intención de la pregunta es determinar la ID de la sesión actualmente activa. Sugiero buscar en la salida de
query session
lo que parece la sesión actual:que asigna la segunda, tercera y cuarta palabra (que esperamos ser el NOMBRE DE USUARIO, [SESIÓN] Identificación y estado) de cada línea de la salida de
query session
a%a
,%b
y%c
, respectivamente, y luego informa de ID de sesión desde la línea donde USERNAME soy yo y STATE esActive
.Resulta que
query session
toma unusername
parámetro, por lo que lo anterior se puede simplificar ao
Para usar esto en un script (archivo por lotes), es posible que desee decir
usando
%%a
y%%b
(en lugar de%a
y%b
) porque está en un script. Probablemente pueda omitir@
si todo el archivo por lotes está debajo@echo off
. La inicialización leunknown
permite manejar errores (detectar si no hay línea en la salida dequery session
esas coincidencias). Extender el manejo de errores para reconocer y reaccionar si hay varias líneas coincidentes en la salida dequery session
se deja como ejercicio.fuente
A diferencia del Nombre de sesión, la ID de sesión no se almacena en una variable y no es tan fácil de acceder. Estoy seguro de que hay uno, pero no puedo pensar en una herramienta de línea de comandos integrada que haga esto.
Sin embargo, he escrito un pequeño archivo .exe (C #, .Net 4) que hace esto.
Mostrará el ID de la sesión y también lo tendrá como código de retorno para que pueda usarlo en una variedad de scripts / técnicas.
Enlace al archivo en MediaFire
fuente
Esto se basa en el código de Oscar Beh.
tasklist
mostrará el informe de ID de sesión (y otra información) para todas las instancias de un ejecutable dado, incluido él mismo. Mientras ejecuta el comando, mostrará su ID de sesión. El único defecto potencial en su código es que no le informa si hay varias instancias del programa, lo que puede hacer que el script devuelva resultados incorrectos.Aquí informamos todas las instancias
tasklist
para asegurarnos de que no haya otra sesión ejecutando ese comando:Si ve dos ID de sesión informados, ejecute el script nuevamente.
fuente