在 Google Cloud 上运行 Windows 服务器时,如果远程桌面服务异常、网络配置出错或远程端口无法连接,可以尝试通过 SAC(特殊管理控制台)进入 Windows 命令行,检查系统状态。本文介绍如何提前配置并验证这个备用入口。
SAC 不依赖 Windows 的远程桌面服务,也不依赖 Windows 内部的网络连接。不过,它仍依赖系统具备基本响应能力;如果系统严重卡死或资源完全耗尽,也不保证能够使用。
一、准备条件
本文以 Google Cloud Compute Engine 中的 Windows Server 2025 为例。其他 Windows Server 版本可能存在界面或配置差异,第三方安装的 Windows 镜像也需要先检查相关组件。
开始前,需要能够正常登录 Windows,并拥有管理员权限;同时需要有权限修改谷歌云实例设置和连接串行控制台。配置涉及启动设置,完成后需要安排一次 Windows 重启。
本文是提前配置备用入口的教程。如果服务器当前已经完全无法登录,就不能直接在系统内执行以下准备命令。
二、打开管理员 PowerShell
通过远程桌面进入服务器,在服务器的开始菜单中搜索 Windows PowerShell,右键选择“以管理员身份运行”。下面的准备命令都在服务器内部执行,不是在自己电脑的 PowerShell 中执行。
三、检查现有配置
查看当前启动配置:
bcdedit /enum all
重点查看当前 Windows 启动项是否包含 ems Yes,以及 EMS 设置中的串口和波特率。仅出现 bootems Yes,不能单独证明 Windows 的 SAC 已经正确启用。虚拟机监控程序的调试串口属于另一项设置,不要混淆。
检查 SAC 辅助服务:
Get-CimInstance Win32_Service -Filter "Name='sacsvr'" | Select-Object Name, State, StartMode | Format-List
如果服务存在,启动模式是 Manual、状态是 Stopped,并不代表配置失败,可以继续后面的步骤。如果没有输出,或者启动模式是 Disabled,应先排查组件缺失或禁用策略,不要假定后续配置一定有效。
四、备份启动配置
修改前先备份 BCD 启动配置:
bcdedit /export "C:\BCD-before-SAC-$(Get-Date -Format 'yyyyMMdd-HHmmss').bak"
正常情况下会提示“操作成功完成”,并在 C 盘生成带时间戳的备份文件。请保留这个文件。它只备份启动配置,不是整台服务器或系统盘的完整备份。
五、启用 EMS 串口支持
将 EMS 配置为使用 COM2,波特率设为 115200:
bcdedit /emssettings EMSPORT:2 EMSBAUDRATE:115200
为当前 Windows 启动项开启 EMS:
bcdedit /ems "{current}" on
以上命令会修改启动配置,但不会立即重启或断开远程桌面。启动项标识符 "{current}" 外面的英文双引号请保留。
执行后,分别检查配置:
bcdedit /enum "{current}"
当前 Windows 启动项中应出现 ems Yes。
bcdedit /enum "{emssettings}"
EMS 设置中应出现 emsport 2 和 emsbaudrate 115200。
六、记录 Windows 电脑名
稍后使用本地账号登录 SAC 时,需要填写 Windows 电脑名。现在执行:
hostname
保存返回的电脑名。注意:它是 Windows 内部的电脑名称,不一定等于谷歌云实例名称,也不是公网 IP 或网站域名。
七、开启谷歌云交互式串口访问
打开 Google Cloud 控制台,依次进入 Compute Engine → 虚拟机实例 → 目标实例 → 修改或编辑。
在“远程访问”区域找到“允许连接到串行端口”,勾选并保存。不同语言或控制台版本的名称可能略有不同。
此功能使用谷歌云串行控制台入口,不需要为 SAC 向公网开放 Windows 的 TCP 端口。如果选项不可用,需要检查云账号权限或组织策略。
八、重启 Windows
保存正在进行的工作,安排好运行中的任务,然后在 Windows 内部选择开始菜单 → 电源 → 重启,让 EMS 启动配置生效。
重启会中断服务器上的任务及远程连接。等待系统恢复后,先确认远程桌面仍能正常登录,再测试备用入口。
九、连接串行端口 2
回到谷歌云实例详情页,找到“连接到串行控制台”,通过旁边的下拉菜单选择串行端口 2。不要使用普通的 SSH 登录入口,也不要误选串行端口 1。
打开的窗口可能显示“SSH-in-browser”,这不代表 Windows 内部必须运行 SSH 服务。判断是否进入 SAC,应看终端中是否出现 SAC>。
如果窗口只有黑屏和光标,点击终端区域,按一次回车并稍等。正常情况下会出现 SAC> 提示符。
十、创建并进入命令行通道
在 SAC> 后输入:
cmd
成功后会提示创建了一个新通道,例如 Cmd0001。使用实际返回的名称切换通道:
ch -sn Cmd0001
Cmd0001 只是示例。如果新建通道是 Cmd0002,就要执行:
ch -sn Cmd0002
出现通道说明后,再按一次回车进入登录提示。
十一、输入 Windows 登录信息
如果使用本地管理员账号,按提示依次填写:
用户名:实际的本地管理员用户名,例如 Administrator。
域:前面执行 hostname 得到的 Windows 电脑名。
密码:该 Windows 账号的密码,不是谷歌账号密码。
每项填完按回车。密码输入时可能不显示字符,这是正常现象。如果服务器加入了域,并使用域账号登录,应填写实际的账号域,而不是照搬本地账号的填写方式。
不要把密码输入到“域”这一栏,也不要在截图、文章或求助信息中公开密码。
登录成功后,通常会看到 C:\Windows\System32>。这说明已经通过串口进入 Windows 命令提示符。
十二、验证备用入口
执行下面这条只读命令,检查远程桌面服务:
sc query TermService
如果返回 STATE : 4 RUNNING,说明远程桌面服务正在运行,也验证了串口登录后能够执行系统管理命令。服务显示运行并不等于远程桌面一定能连接,实际故障仍需要结合网络、端口和日志判断。
当前窗口是 CMD,不是 PowerShell。如果后续诊断需要使用 PowerShell 命令,可以先输入:
powershell
测试时不必故意停止远程桌面服务。备用入口验证可用,不代表需要修改当前正常运行的服务。
十三、使用完如何退出
在 CMD 中执行:
exit
这会结束当前命令行会话,不会关闭服务器,也不会关闭正常的远程桌面会话。如果之前在 CMD 中启动了 PowerShell,第一次 exit 会先退出 PowerShell,返回 CMD 后再执行一次 exit。
十四、常见问题
连接窗口一直黑屏怎么办?
先点击终端并按回车。如果仍没有 SAC 提示符,核对是否选择了串行端口 2、Windows 是否已在修改 EMS 后重启,以及谷歌云是否允许交互式串口连接。单凭黑屏不能认定系统损坏。
提示“找不到该名称的频道”怎么办?
通常是旧通道已经关闭,或者新通道名称发生了变化。在 SAC 提示符下可以输入下面的命令查看通道列表:
ch
根据实际通道名称使用 ch -sn 切换。如果没有可用的命令行通道,重新执行 cmd 创建,并使用这次返回的新名称。
登录失败怎么办?
检查用户名、Windows 电脑名和密码是否正确。登录失败后,通道可能关闭,需要返回 SAC 新建通道。不要把密码发给他人,也不要反复使用已经关闭的通道名称。
有了 SAC,就不需要重启服务器了吗?
不是。SAC 提供额外的排查和恢复机会,但它不是独立于 Windows 的完整操作系统。严重死机或资源耗尽时,命令行仍可能无法创建或执行,最终仍可能需要通过云控制台重启。
SAC 能防止公网密码猜测吗?
不能。它是备用管理入口,不会自动改变远程桌面的公网防火墙规则,也不会修复资源泄漏。远程访问防护和系统故障修复需要另外处理。
十五、以后连接时的小抄
初次配置完成并验证后,以后不必重复执行 BCD 配置或再次重启。日常使用只需记住:
谷歌云实例 → 串行端口 2 → 回车看到 SAC → cmd 创建通道 → ch -sn 实际通道名称 → 回车 → 输入 Windows 账号信息。
进入命令行后,先查看状态和收集信息,再决定修复操作。不要在正常运行时随意终止 svchost.exe 或停止关键服务。
参考资料
Google Cloud:连接 Windows SAC
Google Cloud:Windows 虚拟机故障排查
发布者:彬彬笔记,转载请注明出处:https://www.binbinbiji.com/jianzhanjiaoliu/3805.html