远程桌面与会话

注销所有远程桌面会话用户 - Windows Server

· 52CE 我爱测

在某些情况下,管理员可能需要强制注销当前登录到远程桌面服务器的所有用户。 可以使用批处理文件或 PowerShell 脚本执行此操作。 警告 执行以下过程会注销当前登录到远程桌面服务器的所有用户。 这可能会导致丢失未保存的数据。 因此,建议格外小心。 原始 KB 数: 259436 使用 PowerShell 若要注销所有用户会话,请在连接代理上运行以下 Powershell cmdlet: 若要仅注销断开连接的用户会话,请在连接代理上运行以下 Power

在某些情况下,管理员可能需要强制注销当前登录到远程桌面服务器的所有用户。 可以使用批处理文件或 PowerShell 脚本执行此操作。

警告

执行以下过程会注销当前登录到远程桌面服务器的所有用户。 这可能会导致丢失未保存的数据。 因此,建议格外小心。

原始 KB 数: 259436

使用 PowerShell

若要注销所有用户会话,请在连接代理上运行以下 Powershell cmdlet:

$sessions = Get-RDUserSession

foreach($session in $sessions)
{
    Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force
}

若要仅注销断开连接的用户会话,请在连接代理上运行以下 Powershell cmdlet:

$sessions = Get-RDUserSession |  ? {$_.SessionState -eq "STATE_DISCONNECTED"}

foreach($session in $sessions)
{
    Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force
}

使用批处理文件

将以下信息放入批处理(.bat)文件中:

query session >session.txt  
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i  
del session.txt  

每当管理员希望强制注销未登录到远程桌面服务器控制台的所有用户时,都可以运行此批处理文件。

查询是在远程桌面服务器环境中发现的多用途命令。 在这种情况下,查询会话会创建远程桌面服务器上运行的所有会话的列表,其中包含会话 ID 号。 在批处理文件中,此输出将重定向到文本文件。 然后,FOR 语句分析文本文件的每一行,跳过第一行,并查找在第三列中找到的会话 ID 号。 然后,它将此变量放入 Logoff 中,导致该会话被注销。

运行此批处理文件时收到错误消息并不少见。 如果用户登录到远程桌面服务器控制台,则会生成以下错误消息:

Could not logoff session ID 0 from session Console, Error code 5
Error [5]: Access is denied.

这是因为命令存在 Logoff 限制。 它无法强制注销控制台会话。 此问题的解决方法是修改批处理文件以读取:

query session >session.txt  
for /f "skip=2 tokens=3," %%i in (session.txt) DO logoff %%i  
del session.txt  

这会导致跳过Session.txt文件的前两行,避免错误。

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
按正文的 Windows / Windows Server 适用版本;保留原文兼容性要求
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。