스크립팅 - 원격 데스크톱 세션 연결을 끊는 방법은 무엇입니까?

스크립팅 - 원격 데스크톱 세션 연결을 끊는 방법은 무엇입니까?

컴퓨터(로컬 컴퓨터)에서 모든 활성 원격 데스크톱 세션을 닫는 방법을 찾고 있습니다. Windows에는 활성 세션을 볼 수 있는 몇 가지 명령(rwinsta, qwinsta 등)이 포함되어 있지만 모든 세션을 닫기 위해 정보를 쉽게 사용할 수 있는 방법(문자열을 구문 분석하지 않는 한...)을 알 수 없습니다.

Powershell(또는 C#, Batch)에 로컬 컴퓨터의 모든 원격 데스크톱 세션을 닫는 방법이 있나요?

고마워요, 마틴

답변1

(배치 파일에서) 문서화되지 않은 /sm매개변수를 사용하여 항목을 더 쉽게 정렬할 수 있습니다 .query session

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

답변2

예, 명령줄에서 tsdiscon을 사용합니다:

tsdiscon n

여기서 n은 세션 ID로 대체되어야 합니다.

세션 번호는 다음에서 얻을 수 있습니다.

query session

문 닫고 싶다고 하니까모두로컬 컴퓨터에서 세션을 수행하는 경우 작업 순서에 주의해야 할 것 같습니다(예: 세션을 마지막으로 닫음).

답변3

당신은 사용할 수 있습니다tsdiscon세션 연결을 끊는 유틸리티입니다. 명령 프롬프트에서 "query session" 명령을 사용하면 ID 목록을 확인한 다음 각 ID에 대해 tsdiscon 명령을 실행할 수 있습니다.

이와 같은 반복 구조가 작동해야 합니다.

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

q.bat는 어디에 있나요?

query session /sm | find "Active"

그러면 원격 세션 연결만 끊고 콘솔 사용자는 무시됩니다.

답변4

PSTerminalServices PowerShell 모듈을 사용할 수 있습니다.

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

Get-TSSession -ComputerName server1 -상태 활성 | 연결 끊기-TSSession -WhatIf

관련 정보