腳本編寫 - 如何斷開遠端桌面會話?

腳本編寫 - 如何斷開遠端桌面會話?

我正在尋找一種方法來關閉電腦(本地電腦)上所有活動的遠端桌面會話。 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斷開會話的實用程式。如果您在命令提示字元下使用「查詢會話」命令,則可以查看 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 -電腦名稱 server1 -狀態活動 |斷開-TSSession-WhatIf

相關內容