Obtendo apenas as sessões de área de trabalho remota "ativas"

Obtendo apenas as sessões de área de trabalho remota "ativas"

No Windows, posso obter sessões de área de trabalho remota em um servidor específico usando:

qwinsta /server:SERVER_NAME

Mas isso me dá sessões de todos os estados diferentes (por exemplo: Ativo, Disco, ...).

Alguém sabe sobre um comando ou arquivo em lote ou script para obter apenas as sessões "ativas"? Quero poder executá-lo a partir de um cliente comum do Windows 7.

Responder1

qwinsta /server:SERVER_NAME | find /I "Active"

Observe que esta é apenas uma linha rápida e suja que cuspiria todas as linhas contendo "Ativo" (em letras minúsculas ou maiúsculas). Se você espera nomes de usuário que contenham esta string, as coisas serão mais complicadas e será necessário verificar a quarta coluna para encontrar a string "Ativa" correta:

for /F "usebackq tokens=1,2,3,4,5*" %i in (`qwinsta /server:SERVER_NAME ^| find "Active"`) do if "%l" == "Active" ( echo %i %j %k %l %m )

Se você precisar processar campos únicos da saída de qualquer maneira, o último formato é preferido, pois exporia os campos nas variáveis %i​​....%m

Mas esta construção também falha se você tiver nomes de usuário contendo espaços. Se for esse o caso, tudo está perdido com qwinsta e você deve procurar uma função do PowerShell para recuperar a lista de usuários.

informação relacionada