使用管理员权限运行命令提示符,输入
msg /server:计算机名 用户名|会话ID "消息内容"
即可向指定用户或会话发送弹出消息。
msg
是一个内置于 Windows 操作系统(特别是专业版、企业版、教育版等,家庭版可能不支持或功能受限)的命令行工具,它的核心功能是向同一网络(通常是同一局域网或域)中其他已登录 Windows 的用户发送简单的文本消息,这条命令在网络管理、小型办公环境或需要快速通知同事的场景下非常有用。
重要前提和限制:
- 目标用户必须已登录: 你只能向当前已登录到其计算机的用户发送消息,如果用户已注销或计算机已关机/睡眠,消息将无法送达。
- 网络要求: 发送方和目标计算机必须在同一个局域网 (LAN) 或同一个 Windows 域 (Domain) 中,通常无法通过互联网直接发送。
- 服务状态: 目标计算机上必须运行着
Messenger
服务(在较新 Windows 版本中,该服务可能默认禁用或已改名/整合),在 Windows XP/Vista/7 时代,这个服务叫 “Messenger”,在更新的 Windows (8, 10, 11) 中,确保Windows
服务处于运行状态(它是消息传递功能的基础),防火墙设置(包括 Windows Defender 防火墙)需要允许文件和打印机共享相关的入站规则。 - 权限: 你通常需要具有管理员权限才能成功执行
msg
命令,在命令提示符 (CMD) 或 PowerShell 中运行时,请确保以管理员身份运行。 - 消息格式: 只能发送纯文本消息,不支持富文本、图片或文件。
- 接收方体验: 消息会以弹出窗口的形式显示在目标用户的屏幕上,通常带有发送者的计算机名或用户名,用户需要点击“确定”才能关闭。
基本命令语法:
msg {username | sessionname | sessionid | @filename | *} [/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]
参数详解:
-
*`{username | sessionname | sessionid | @filename | }` (必需):** 指定消息的接收者,你可以选择以下方式之一:
username
: 目标用户的登录用户名(zhangsan
),这是最常用的方式。sessionname
: 目标用户会话的名称(通常比较难记,不如用户名常用)。sessionid
: 目标用户会话的 ID 号(一个数字),可以通过query session
或query user
命令查看。@filename
: 指定一个文本文件,该文件包含一个或多个用户名、会话名或会话 ID(每行一个)。msg
会向文件中的所有目标发送消息。- *`
:** 向当前服务器(或
/SERVER` 指定的服务器)上所有已登录的用户发送消息,慎用!
-
/SERVER:servername
(可选): 指定要查询用户登录状态并发送消息的目标服务器(计算机名),如果省略,默认是发送命令的本地计算机(即你操作的那台电脑),如果你想向域中其他计算机上的用户发消息,必须使用此参数指定目标计算机名(/SERVER:PC-02
或/SERVER:fileserver
),这是跨计算机发送的关键参数。 -
/TIME:seconds
(可选): 指定消息对话框在目标用户屏幕上保持打开(等待用户响应)的最长时间(秒),如果用户不点击“确定”,时间到了对话框会自动关闭,默认时间通常较短(60 秒)。/TIME:120
表示等待 2 分钟。 -
/V
(可选 – Verbose): 显示详细执行信息,包括哪些操作成功,哪些失败(例如找不到用户),有助于调试。 -
/W
(可选 – Wait): 强制msg
命令等待,直到目标用户点击了消息对话框上的“确定”按钮或超时发生,命令提示符才会返回,如果不加此参数,命令发送后立即返回,不等待用户响应。 -
[message]
(可选): 要发送的文本消息内容,如果消息中包含空格,必须用双引号 将整个消息括起来,如果省略此参数,msg
会提示你逐行输入消息,按Ctrl+Z
然后回车结束输入(或按F6
再回车)。
常用示例:
-
向本地计算机上的用户发送消息:
msg zhangsan "请尽快保存工作,服务器将在5分钟后重启。"
(向本地登录的用户
zhangsan
发送一条消息) -
向远程计算机上的用户发送消息:
msg lisi /SERVER:PC-DEPT-01 "您提交的报告已收到,谢谢!"
(向计算机名为
PC-DEPT-01
上登录的用户lisi
发送消息) -
向所有本地登录用户广播消息:
msg * "紧急通知:网络维护将在15分钟后开始,请保存好所有文件。"
(向本地计算机上所有已登录用户发送广播消息 – 慎用)
-
向文件中的用户列表发送消息:
创建一个文本文件recipients.txt
如下:wangwu zhaoliu
然后运行命令:
msg @recipients.txt /SERVER:MAINSERVER "下午2点会议室开会,请准时参加。"
(向
MAINSERVER
服务器上登录的用户wangwu
和zhaoliu
发送相同消息) -
发送消息并等待用户确认:
msg zhangsan /W "请确认备份已完成,完成后请点击'确定'。"
(向
zhangsan
发送消息,命令提示符会一直等待,直到他点击“确定”或超时) -
发送消息并显示详细信息:
msg lisi /SERVER:PC-02 /V "测试消息,请忽略。"
(向
PC-02
上的lisi
发送测试消息,并显示命令执行的详细信息)
常见问题与故障排除:
- “错误 5 正在获取会话名”: 通常表示权限不足。务必以管理员身份运行命令提示符或 PowerShell。
- “错误 1713”: 找不到指定的用户名 (
username
),检查用户名拼写是否正确,并且该用户确实已登录到指定的服务器 (/SERVER
) 上,使用query user /SERVER:servername
命令查看目标服务器上的登录用户列表。 - 消息未弹出/目标用户没收到:
- 确认目标用户已登录且未锁定屏幕(有时锁屏状态下不显示)。
- 确认目标计算机的
Windows
服务正在运行 (services.msc 中查看)。 - 检查目标计算机的防火墙设置,确保允许“文件和打印机共享”相关的入站规则(特别是
NB-Session
和NB-Name
相关的规则)。 - 在目标计算机上,检查 “系统属性” -> “高级” -> “启动和故障恢复” -> “设置”,确保 “系统失败” 下的 “将事件写入系统日志” 已勾选(某些旧文档提到此设置影响消息接收)。
- 在组策略 (
gpedit.msc
) 中,检查 “计算机配置” -> “管理模板” -> “Windows 组件” -> “Windows 消息框” 下的策略是否禁用了消息接收(较新 Windows 可能无此策略)。
- 家庭版用户: Windows 家庭版通常不包含或不支持
msg
命令或其依赖的服务。
安全与使用建议:
- 权限最小化: 仅在必要时使用管理员权限。
- 明确目的: 用于工作沟通或重要系统通知,避免发送无关或骚扰信息。
- 内容清晰: 消息应简洁明了,说明发送者身份和意图。
- 尊重隐私: 不要滥用广播 () 功能。
- 替代方案: 在现代工作环境中,即时通讯软件 (Teams, Slack, 微信, QQ)、电子邮件或专业的 IT 通知系统通常是更可靠、功能更丰富的替代方案。
msg
更适合简单的、临时的局域网内通知。
msg
命令是一个经典的 Windows 网络管理工具,用于在局域网或域环境中向已登录用户发送简单的弹出式文本消息,它的使用依赖于正确的网络配置、服务状态、防火墙规则和管理员权限,虽然功能有限且在现代环境中可能不如其他通讯工具常用,但在特定场景下(如无其他工具可用的紧急系统通知)仍能发挥作用,使用时请务必注意前提条件和限制。
引用说明:
- 基于 Microsoft 官方关于命令行工具和网络服务的文档。
- 具体命令语法和参数解释参考了 Windows 内置的
msg /?
帮助信息。 - 故障排除建议综合了常见的系统管理员经验和社区讨论。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6310.html