Как я могу получить текущий идентификатор сеанса пользователя через командную строку Windows?
В списке задач на вкладке пользователи каждый пользователь связан с идентификатором сеанса. Я хочу получить это через командную строку, чтобы я мог использовать его для удаленного приложения.
windows
command-line
отрицательный
источник
источник
Ответы:
Это, конечно, не самый эффективный способ, но вы можете взглянуть на результаты
tasklist
. Он будет отображать имя и номер сеанса каждого запущенного процесса. Если вы вошли в систему локально, посмотрите на идентификатор сеанса с именем «console».Редактировать :
Query Session
получит идентификатор сессии:источник
tasklist
это хорошо, потому что не требует версии Pro / Ent OS. Вы также можете перечислить только интерактивные сеансы, отфильтровываяtasklist /fi "imagename eq explorer.exe"
источник
tasklist
.Это сочетает в себе аспекты ответа Гари и ответа Оскара . Как отмечает Гэри, выход
query session
выглядит примерно такили, в моем случае (с помощью «Переключить пользователя»)
(У меня не настроен RDP, поэтому я не могу проверить его.) Предположительно, цель вопроса - определить идентификатор текущего активного сеанса. Я предлагаю поискать вывод того,
query session
что выглядит как текущий сеанс:который назначает на 2 - й, 3 - й и 4 - -е слова (которые , как мы надеемся быть USERNAME [SESSION] ID и STATE) из каждой строки вывода
query session
к%a
,%b
и%c
, соответственно, а затем передает SESSION ID от линии , где USERNAME - это я, а State -Active
.Получается, что
query session
принимаетusername
параметр, поэтому вышесказанное можно упростить доили
Чтобы использовать это в сценарии (командный файл), вы можете сказать,
используя
%%a
и%%b
(вместо%a
и%b
), потому что это в сценарии. Возможно, вы можете пропустить,@
если весь пакетный файл находится под@echo off
. Инициализацияunknown
позволяет вам выполнять обработку ошибок (обнаружение, если на выходе нетquery session
совпадений). Расширение обработки ошибок для распознавания и реагирования, если в выходных данных есть несколько совпадающих строк,query session
оставлено в качестве упражнения.источник
В отличие от имени сеанса, идентификатор сеанса не хранится в переменной и к нему не так легко добраться. Я уверен, что есть один, но я не могу думать о встроенном инструменте командной строки, который делает это.
Тем не менее, я написал крошечный файл .exe (C #, .Net 4), который делает это.
Он будет отображать идентификатор сеанса, а также будет иметь его в качестве кода возврата, чтобы вы могли использовать его в различных сценариях / техниках.
Ссылка на файл на MediaFire
источник
Это основано на коде от Оскара Беха.
tasklist
покажет отчет ID сеанса (и другую информацию) для всех экземпляров данного исполняемого файла, включая самого себя. Когда вы запускаете команду, она покажет ваш идентификатор сессии. Единственный потенциальный дефект в его коде - это то, что он не сообщает вам, если есть несколько экземпляров программы, что может заставить скрипт возвращать неверные результаты.Здесь мы сообщаем обо всех случаях,
tasklist
чтобы гарантировать, что нет другой сессии, выполняющей эту команду:Если вы видите два идентификатора сеанса, запустите скрипт снова.
источник