Como posso recuperar o ID da sessão do usuário atual por meio da linha de comando do Windows?
Na lista de tarefas na guia Usuários, cada usuário é associado a um ID de sessão. Eu quero recuperar isso via linha de comando para que eu possa usá-lo para um aplicativo remoto.
windows
command-line
Negativo
fonte
fonte
Respostas:
Esta não é certamente a maneira mais eficiente, mas você pode dar uma olhada nos resultados
tasklist
. Ele exibirá o nome e a sessão # de cada processo em execução. Se você estiver logado localmente, observe o ID da sessão chamada "console".Editar :
Query Session
irá recuperar o id da sessão:fonte
tasklist
é bom porque não requer uma versão do sistema operacional Pro / Ent. Você também pode listar apenas sessões interativas filtrando para explorer.exe -tasklist /fi "imagename eq explorer.exe"
Este combina aspectos da resposta de Gary e a resposta de Oscar . Como observado por Gary, a saída
query session
parece algo comoou, no meu caso (usando “Switch user”)
(Eu não tenho o RDP configurado, então não posso testar com ele.) Presumivelmente, a intenção da questão é determinar o ID da sessão atualmente ativa. Eu sugiro pesquisar a saída de
query session
para o que parece ser a sessão atual:que atribui a 2ª, 3ª e 4ª palavra (que esperamos ser o username, [SESSION] ID, e estaduais) de cada linha da saída de
query session
a%a
,%b
e%c
, respectivamente, e, em seguida, relatórios de sessão ID da linha onde USERNAME sou eu e STATE éActive
.Acontece que
query session
leva umusername
parâmetro, então o acima pode ser simplificado paraou
Para usar isso em um script (arquivo em lotes), você pode querer dizer
usando
%%a
e%%b
(em vez de%a
e%b
) porque está em um script. Você provavelmente pode deixar de fora@
se o arquivo de lote inteiro estiver sob@echo off
. A inicializaçãounknown
permite que você faça o tratamento de erros (detectando se não há nenhuma linha na saídaquery session
correspondente). Estender o tratamento de erros para reconhecer e reagir se houver várias linhas correspondentes na saídaquery session
é deixado como um exercício.fonte
fonte
tasklist
ao mesmo tempo.Ao contrário do nome da sessão, o ID da sessão não é armazenado em uma variável e não é tão fácil de acessar. Tenho certeza de que existe um, mas não consigo pensar em uma ferramenta de linha de comando integrada que faça isso.
No entanto, eu escrevi um pequeno arquivo .exe (C #, .Net 4) que faz isso.
Ele exibirá o ID da sessão e também o terá como o código de retorno para que você possa usá-lo em diversos scripts / técnicas.
Link para o arquivo no MediaFire
fonte
Isto é baseado no código do Oscar Beh.
tasklist
mostrará o relatório do ID da sessão (e outras informações) para todas as instâncias de um determinado executável, incluindo ele mesmo. Enquanto você está executando o comando, ele mostrará o seu id de sessão. O único defeito em potencial em seu código é que ele não informa se há várias instâncias do programa, o que pode fazer com que o script retorne resultados incorretos.Aqui nós relatamos todas as instâncias de
tasklist
para garantir que não haja outra sessão executando esse comando:Se você ver dois IDs de sessão relatados, execute o script novamente.
fonte