% sessionname% retorna o nome da sessão incorreta

4

Eu tenho uma máquina virtualizada do Windows XP SP3, à qual estou me conectando pela área de trabalho remota. Um dos meus scripts precisa usar a variável% sessionname%. No entanto, isso retorna informações incorretas.

C:\>%sessionname%

retorna constantemente RDP-Tcp # 5, em vez do valor da sessão atualmente conectada (RDP-Tcp # 35 ou similar), como mostrado no Gerenciador de Tarefas

Isso faz com que meus scripts contenham informações incorretas. O que posso fazer para resolver isso?

Editar mais informações: Uma reinicialização parece resolver o problema da primeira conexão, mas as conexões subseqüentes fazem com que os números caiam novamente em sincronia.

    
por Megan Walker 23.01.2012 / 12:18

3 respostas

1

Estou tendo exatamente o mesmo problema com o Windows Server 2008 R2 sendo executado como uma Área de Trabalho Remota. O ID da sessão parece estar sempre correto, mas você não pode obter o ID da sessão de% sessionid% ou de com o VBA Environ ("SessionID"). Minha solução é usar a sessão de consulta Environ ("UserName") com C: > para extrair o SessionID e usá-la com o processo de consulta C: > "processname" para determinar se o processo está sendo executado na sessão. Não tenho certeza do que seu script está fazendo, mas talvez essa abordagem ajude. Observe que isso só funcionará se um usuário tiver permissão apenas para uma sessão de cada vez, como é o caso em nossa configuração do servidor de terminal. Se um usuário puder ter mais de uma sessão, o ID da sessão não será exclusivo com base no nome de usuário.

    
por 15.01.2013 / 17:10
0

Não sei por que ele não é atualizado corretamente, mas talvez você possa usar a saída de conseguir sessão em vez disso? É um pouco mais detalhado também.

    
por 23.01.2012 / 14:17
0

Obrigado Paul pelo seu post. Eu tenho o mesmo problema no Win2008R2 e mudei meu script para isso:

for /F "usebackq tokens=1" %%f in ('query session ^| findstr /C:^^^>') do set session="%%f"
set session=%session:~10,-1%
tasklist /FI "SESSIONNAME eq RDP-Tcp#%session%" | findstr mytool.exe >NUL
if %errorlevel% EQU 0 echo Tool found!

Eu procuro a sessão atual (então funciona se várias sessões forem abertas com o mesmo usuário). Então eu olho se a minha ferramenta está sendo executado na sessão atual.
Observe o "" em torno de %% f para que eu não fique incomodado com o ">" no começo da linha.

    
por 25.04.2013 / 12:37