Comment puis-je récupérer l'ID de session utilisateur actuel via la ligne de commande Windows?
Dans la liste des tâches sous l'onglet utilisateurs, chaque utilisateur est associé à un ID de session. Je souhaite récupérer cela via la ligne de commande afin de pouvoir l'utiliser pour une application distante.
windows
command-line
Négatif
la source
la source
Réponses:
Ce n'est certainement pas le moyen le plus efficace, mais vous pouvez consulter les résultats de
tasklist
. Il affichera le nom et le numéro de session de chaque processus en cours d'exécution. Si vous êtes connecté localement, regardez l'ID de la session nommée "console".Modifier :
Query Session
récupérera l'ID de session:la source
tasklist
est bon car il ne nécessite pas de version Pro / Ent OS. Vous pouvez également répertorier uniquement les sessions interactives en filtrant pour explorer.exe -tasklist /fi "imagename eq explorer.exe"
la source
tasklist
en même temps.Celui - ci combine les aspects de la réponse de Gary et la réponse d'Oscar . Comme l'a noté Gary, la sortie de
query session
ressemble à quelque chose commeou, dans mon cas (en utilisant "Changer d'utilisateur")
(Je n'ai pas configuré RDP, donc je ne peux pas tester avec.) Vraisemblablement, l'objectif de la question est de déterminer l'ID de la session actuellement active. Je suggère de rechercher dans la sortie de
query session
ce qui ressemble à la session en cours:qui attribue la 2ème, 3ème et 4ème mot (que nous espérons être le USERNAME, [SESSION] ID et STATE) de chaque ligne de la sortie
query session
à%a
,%b
et%c
, respectivement, et fait ensuite rapport SESSION ID de la ligne où USERNAME est moi et STATE l'estActive
.Il s'avère que cela
query session
prend unusername
paramètre, donc ce qui précède peut être simplifié pourou
Pour l'utiliser dans un script (fichier batch), vous voudrez peut-être dire
en utilisant
%%a
et%%b
(au lieu de%a
et%b
) parce que c'est dans un script. Vous pouvez probablement laisser de côté@
si le fichier de commandes entier est sous@echo off
. L'initialisationunknown
vous permet de gérer les erreurs (détecter s'il n'y a pas de ligne dans la sortie dequery session
cette correspondance). L'extension de la gestion des erreurs pour reconnaître et réagir s'il y a plusieurs lignes correspondantes dans la sortie dequery session
est laissée comme exercice.la source
Contrairement au nom de session, l'ID de session n'est pas stocké dans une variable et n'est pas aussi facile d'accès. Je suis sûr qu'il y en a un, mais je ne peux pas penser à un outil de ligne de commande intégré qui fasse cela.
Cependant, j'ai écrit un petit fichier .exe (C #, .Net 4) qui fait cela.
Il affichera à la fois l'ID de session et l'aura également comme code de retour afin que vous puissiez l'utiliser dans une variété de scripts / techniques.
Lien vers un fichier sur MediaFire
la source
Ceci est basé sur le code d'Oscar Beh.
tasklist
affichera le rapport de l'ID de session (et d'autres informations) pour toutes les instances d'un exécutable donné, y compris lui-même. Lorsque vous exécutez la commande, elle affichera votre identifiant de session. Le seul défaut potentiel de son code est qu'il ne vous informe pas s'il existe plusieurs instances du programme, ce qui peut entraîner le script à renvoyer des résultats incorrects.Nous rapportons ici toutes les instances de
tasklist
pour nous assurer qu'aucune autre session n'exécute cette commande:Si vous voyez deux ID de session signalés, réexécutez le script.
la source