从 60℃到 40℃:Win10 小主机另类低功耗改造实录
适用场景:散热不佳的 Win10 迷你主机 / 低功耗服务器 / 长期挂机设备
主要目的:有人用时性能全开,无人用时自动节能降温
一、需求背景
在家庭或小型办公环境中,使用 Windows 10 迷你主机(如 N100)作为轻量服务器时,常面临以下矛盾:
❗ 散热瓶颈:被动散热或风扇较小,高负载下积热严重,强风扇又吸灰。
❗ 资源浪费:大部分时间处于空闲状态,无需高性能模式。
❗ 会话残留:远程断开后,会话未注销导致后台程序持续占用资源。
但这类设备通常存在:
❗ 散热较差
❗ 长时间运行发热明显
❗ 大多数时间处于空闲状态

可以自己调整节能模式,将性能调整的足够低

二、实现思路
采用 “事件触发 + 定时轮询 + 组策略限制” 三位一体方案:

三、核心脚本
1. 定时检测脚本
路径:
# 作用:每5分钟运行,检测是否有人连接。若断开超过 10 分钟,切换到“节能模式”。
C:Scriptspower_auto.bat
将第5行 Administrator 修改成自己的实际用户名
@echo off setlocal enabledelayedexpansion
:: ===== CONFIG ===== set USERNAME_TARGET=Administrator set BALANCED=381b4222-f694-41f0-9685-ff5bb260df2e set SAVER=a1841308-3541-4fab-bc81-f71556f20b4a set TIMEOUT_MIN=10
set STATE_FILE=C:Scriptslast_active.txt set LOG_FILE=C:Scriptspower.log
:: ===== TIME ===== for /f %%a in ('powershell -command "[int][double]::Parse((Get-Date -UFormat %%s))"') do set NOW=%%a
:: ===== CHECK RDP ===== set ACTIVE=0
for /f "skip=1 tokens=1,2,3,4" %%a in ('query session') do ( echo %%a %%b %%c %%d | findstr /i "rdp-tcp" >nul if not errorlevel 1 ( echo %%a %%b %%c %%d | findstr /i "%USERNAME_TARGET%" >nul if not errorlevel 1 ( set ACTIVE=1 ) ) )
:: ===== CURRENT MODE ===== for /f "tokens=3" %%i in ('powercfg /getactivescheme') do set CURRENT=%%i
:: ===== ACTIVE → BALANCED ===== if "!ACTIVE!"=="1" ( echo %NOW% > "%STATE_FILE%"
if /i not "!CURRENT!"=="%BALANCED%" ( powercfg /setactive %BALANCED% echo [%date% %time%] ACTIVE -> BALANCED >> "%LOG_FILE%" ) exit /b 0 )
:: ===== IDLE CHECK ===== if not exist "%STATE_FILE%" ( echo %NOW% > "%STATE_FILE%" exit /b 0 )
set /p LAST=<"%STATE_FILE%" set /a DIFF=(NOW-LAST)/60
if %DIFF% GEQ %TIMEOUT_MIN% ( if /i not "!CURRENT!"=="%SAVER%" ( powercfg /setactive %SAVER% echo [%date% %time%] IDLE %TIMEOUT_MIN% min -> POWER SAVER >> "%LOG_FILE%" ) )
exit /b 0
2. 登录触发脚本
路径:
# 作用:检测到远程登录时,立即切换到“平衡模式”。
C:Scriptspower_on_login.bat
@echo off
powercfg /setactive 381b4222-f694-41f0-9685-ff5bb260df2e
echo [%date% %time%] RDP LOGIN -> BALANCED >> C:Scriptspower.log
四、任务计划配置
1. 创建脚本目录
mkdir C:Scripts
2. 定时任务(每5分钟执行)
schtasks /create ^
/tn "PowerAutoCheck" ^
/tr "C:Scriptspower_auto.bat" ^
/sc minute /mo 5 ^
/ru SYSTEM ^
/f
3. RDP 登录触发任务
schtasks /create ^
/tn "PowerOnRDPLogin" ^
/tr "C:Scriptspower_on_login.bat" ^
/sc onevent ^
/ec Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational ^
/mo "*[System[(EventID=1149)]]" ^
/ru SYSTEM ^
/f
4. RDP 配置组策略(会话超时限制)
目的:防止用户连接后长时间不操作(挂机),导致系统无法进入深度节能状态。
依次展开,路径:
本地组策略编辑器
→ 计算机配置
→ 管理模板
→ Windows 组件
→ 远程桌面服务
→ 远程桌面会话主机
→ 会话时间限制
“设置活动的远程桌面服务会话的时间限制”,选择 “已启用”,选择 “1 小时”

💡 实际运行逻辑:
空闲检测:无论 RDP 是否连接,只要检测到用户 1 小时内无任何操作(鼠标/键盘),系统将强制断开桌面连接。
会话保留:此时仅断开图形界面,用户会话并未注销,后台程序继续运行(内存仍被占用)。
脚本接力:
断开5分钟后,
power_auto.bat脚本会检测到“无活动会话”。脚本开始计时,10 分钟后(若仍未重连),自动将电源计划切换为 【节能模式】。
五、运行效果与验证
🔍 验证方法
查看当前电源模式:
在 CMD 中输入powercfg /getactivescheme,确认当前是“平衡”还是“节能”。查看会话状态:
输入query session,观察断开后的会话是否在 1 小时后消失。查看日志记录:
打开C:Scriptspower.log,应看到类似记录:

🟢 预期行为
登录时:几乎无感,系统瞬间恢复平衡模式,保证操作流畅。
断开后:
5 分钟内:保持平衡模式(防止短暂断开频繁切换)。
5 分钟后:自动切换至节能模式,降低功耗和发热。
1 小时后:组策略介入,强制断开会话,清理后台。
🎯 一句话总结
👉 “有人用就全力跑,没人用就自动降功耗”
作者提示含AI生成内容。作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
