query命令是Windows操作系统中用于查询远程桌面服务(RDS)会话、用户登录信息及相关进程的实用工具,主要在命令提示符(cmd)环境下使用,适用于系统管理员监控服务器会话状态、排查用户连接问题或管理远程桌面资源,其核心功能是通过不同子命令获取系统中的会话、用户、进程等详细信息,帮助管理员高效掌握服务器运行状态。
query命令基础语法与常用子命令
query命令的基本语法结构为query [子命令] [参数]
,需通过指定子命令明确查询目标,以下是常用子命令的详细用法及示例:
query user:查询用户会话信息
功能:显示当前登录到服务器的用户会话列表,包括用户名、会话ID、连接状态、空闲时间等关键信息。
语法:query user [username] [/server:servername]
username
:可选参数,指定要查询的特定用户名,不填则显示所有用户。/server:servername
:可选参数,指定目标服务器名称(本地查询时可省略)。
示例:
- 查询本地服务器所有用户会话:
query user
- 查询服务器“WIN-SERVER01”上用户“admin”的会话:
query user admin /server:WIN-SERVER01
输出解读:
执行query user
后, typical输出包含以下列:
USERNAME
:用户名(如“admin”“DOMAINuser”)。SESSIONNAME
:会话名称(如“console”表示控制台会话,“rdp-tcp”表示远程桌面会话)。ID
:会话唯一标识数字(控制台会话默认为0,远程会话从1开始)。STATE
:会话状态(“Active”表示活动,“Disc”表示断开连接,“Idle”表示空闲)。IDLE TIME
:空闲时间(格式为“时:分”,如“0:15”表示空闲15分钟)。LOGON TIME
:用户登录时间(格式为“日期/时间”)。
query session:查询服务器会话列表
功能:列出服务器上所有活动的会话(包括控制台会话和远程会话),常用于查看会话类型、连接状态及关联用户。
语法:query session [sessionname | sessionid] [/server:servername]
sessionname | sessionid
:可选参数,指定会话名称(如“rdp-tcp#0”)或会话ID,不填则显示所有会话。/server:servername
:可选参数,目标服务器名称。
示例:
- 查询本地服务器所有会话:
query session
- 查询服务器“WIN-SERVER01”上会话ID为“2”的会话:
query session 2 /server:WIN-SERVER01
输出解读:
输出列包括:
SESSIONNAME
:会话名称(“console”为控制台,“rdp-tcp”为远程桌面监听会话)。USERNAME
:关联用户名(空表示未登录)。ID
:会话ID。TYPE
:会话类型(“console”控制台,“rdp”远程桌面)。STATE
:会话状态(“Active”“Listen”“Disc”)。
query process:查询远程桌面相关进程
功能:显示与远程桌面服务关联的进程信息,包括进程ID、会话ID、进程名称等,可用于排查异常进程或资源占用问题。
语法:query process [processid | sessionname | sessionid] [/server:servername]
processid | sessionname | sessionid
:可选参数,指定进程ID、会话名称或会话ID。/server:servername
:可选参数,目标服务器名称。
示例:
- 查询本地所有远程桌面相关进程:
query process
- 查询服务器“WIN-SERVER01”上会话“rdp-tcp#1”的进程:
query process rdp-tcp#1 /server:WIN-SERVER01
输出解读:
输出列包括:
PROCESS NAME
:进程名称(如“explorer.exe”“taskmgr.exe”)。SESSION NAME
:进程所属会话名称。SESSION ID
:进程所属会话ID。PID
:进程ID。
query termserver:查询终端服务器列表
功能:列出域中所有配置为终端服务器的计算机,适用于域环境下的服务器管理。
语法:query termserver [/domain:domainname]
/domain:domainname
:可选参数,指定要查询的域名,不填则查询当前域。
示例:
- 查询当前域中的终端服务器:
query termserver
- 查询域“corp.local”中的终端服务器:
query termserver /domain:corp.local
常用子命令参数速查表
子命令 | 核心功能 | 关键参数 | 适用场景 |
---|---|---|---|
query user |
查询用户会话信息 | /server:servername (指定服务器) |
监控用户登录状态、排查断连问题 |
query session |
查询服务器会话列表 | sessionname/sessionid (指定会话) |
查看会话类型、管理远程连接 |
query process |
查询远程桌面相关进程 | processid/sessionid (指定进程/会话) |
排查进程异常、资源占用分析 |
query termserver |
查询域终端服务器列表 | /domain:domainname (指定域名) |
域环境服务器管理 |
使用场景与注意事项
典型使用场景:
- 监控用户会话:通过
query user
定期检查服务器登录用户,识别长时间空闲会话并及时断开,释放资源。 - 排查连接问题:当用户反馈“无法远程连接”时,用
query session
查看会话状态,若“STATE”为“Disc”,可尝试重启会话或检查网络。 - 进程管理:通过
query process
定位异常进程(如CPU占用过高),结合任务管理器进一步处理。
注意事项:
- 权限要求:默认需要管理员权限(以管理员身份运行cmd),否则可能无法获取完整信息。
- 远程查询:查询远程服务器时,需确保目标服务器已启用“远程桌面服务”且防火墙允许相关端口(默认3389)。
- 版本差异:不同Windows版本(如Windows Server 2016/2019/2022)的输出格式可能略有差异,以实际输出为准。
相关问答FAQs
Q1:执行query user
时提示“错误5:拒绝访问”,如何解决?
A:此错误通常因权限不足导致,需以管理员身份运行命令提示符:右键点击cmd图标,选择“以管理员身份运行”,然后重新执行命令,若为远程查询,还需确认当前用户在目标服务器上具有“远程桌面用户”或“管理员”权限。
Q2:如何将query session
的查询结果导出到文本文件以便后续分析?
A:使用命令重定向符号>
将输出保存到文件,query session > C:sessions.txt
,若需追加内容而非覆盖,使用>>
符号(如query session >> C:sessions.txt
),导出后可通过记事本或Excel打开分析。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/15242.html