Scripting - Como desconectar sessões de Área de Trabalho Remota?

Scripting - Como desconectar sessões de Área de Trabalho Remota?

Estou procurando uma maneira de fechar todas as sessões ativas da Área de Trabalho Remota em um computador (computador local). O Windows inclui alguns comandos (rwinsta, qwinsta, etc.) para ver as sessões ativas, mas não vejo como poderia facilmente usar as informações (a menos que eu analise a string...) para fechar todas as sessões.

Existe uma maneira no Powershell (ou C#, Batch) de fechar todas as sessões da Área de Trabalho Remota em um computador local?

Obrigado, Martinho

Responder1

Você poderia tentar usar o /smparâmetro não documentado for query session(em um arquivo em lote) para classificar as coisas com mais facilidade:

FOR /f %%G IN ('query session /sm') DO tsdiscon %%G

Responder2

Sim, usando tsdiscon em uma linha de comando:

tsdiscon n

onde o n deve ser substituído pelo ID da sessão.

Você pode obter o número da sessão em

query session

Já que você diz que quer fechartodossessões no computador local, acho que você precisará ter cuidado com a ordem em que faz isso (ou seja, feche sua sessão por último).

Responder3

Você pode usar otsdisconutilitário para desconectar sessões. Se você usar o comando "query session" em um prompt de comando, poderá ver a lista de IDs e, em seguida, emitir um comando tsdiscon para cada um.

Uma construção de loop como esta deve funcionar

FOR /f %%G IN ('q.bat') DO tsdiscon %%G

onde q.bat está

query session /sm | find "Active"

Isso apenas desconectará as sessões remotas e ignorará o usuário do console.

Responder4

Você pode usar o módulo PSTerminalServices PowerShell:

http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2010/02/22/psterminalservices-powershell-module-for-terminal-services.aspx

Get-TSSession -ComputerName server1 -State Ativo | Desconectar-TSSession -WhatIf

informação relacionada