컴퓨터(로컬 컴퓨터)에서 모든 활성 원격 데스크톱 세션을 닫는 방법을 찾고 있습니다. 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 모듈을 사용할 수 있습니다.
Get-TSSession -ComputerName server1 -상태 활성 | 연결 끊기-TSSession -WhatIf