Featured image of post Windows 系统管理员实战:远程桌面、SNMP 监控、注册服务与 winget 时代工具链

Windows 系统管理员实战:远程桌面、SNMP 监控、注册服务与 winget 时代工具链

Windows Server 管理员日常速查:远程桌面授权绕过、可执行程序注册服务、SNMP 装/配/接 hertzbeat 监控、磁盘清理、winget/choco/scoop 包管理、Snipaste/WindTerm/Motrix 等实用工具分类

一、为什么 Windows 系统配置仍然是"必备技能"

很多人以为 Windows “开箱即用"不需要管,但对真正在企业环境里维护 Windows Server 的人来说,“装好之后还要改的东西"远比装系统本身多

  • 远程桌面授权到期,全员登不上;
  • 自研 exe 想常驻,注册成系统服务;
  • SNMP 装好但"安全"标签页没出来;
  • C 盘一年没清,几个 G 的 Hiberfil.sys 默默躺在那;
  • 包管理器从零散的 .msi 下载到 winget 一行命令;
  • 终端代理怎么设、命令行怎么拉起 Python 解释器。

本文把 6 类高频场景串成一份可对照操作的速查手册,全部基于 PowerShell 7 + Windows 10/11/Server 2019+。

二、远程桌面:复制失效 & 授权到期

2.1 远程无法互相复制文件

远程桌面里"复制粘贴"突然失效,最常见的原因是 rdpclip.exe 进程挂了。

1
2
# 在远程主机上任务管理器 → 结束 rdpclip.exe
# 然后 Win+R → 运行 rdpclip.exe 重启

或者一行 PowerShell:

1
2
Get-Process rdpclip -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Process rdpclip

2.2 远程授权到期:“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开”

Server 默认 120 天宽限期,过期后管理员也无法登录。应急办法:用 /admin 模式强制登录一次,然后清理注册表里的宽限期记录。

1
2
# 强制登录(用 /admin 而非 /console,2012 R2 之后 console 已废弃)
mstsc /admin /v:internal.example.com

注:internal.example.com 在此仅作占位,请替换为实际服务器地址。

登录后清理授权记录(可重置回 120 天):

1
2
3
4
5
6
7
1. 打开注册表 regedit
2. 进入 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod
3. 右键 GracePeriod → 权限 → 高级
4. 所有者 → 更改 → 高级 → 立即查找 → 选择 Administrators → 确定
5. 审核 → 添加 → 主体:Administrators → 勾选安全控制
6. 回到 GracePeriod 权限 → Administrators 勾选安全控制
7. 删除 REG_BINARY → 重启

此方法可继续使用 120 天,过期后再次按此操作。这是临时续命方案,长期请部署正式的 RD Licensing 服务器。

三、可执行程序注册为系统服务

3.1 nssm:最省心的方案

下载 nssm(建议 2.24+),把 nssm.exe 加入 PATH

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 安装服务
nssm install 服务名

# 编辑已存在服务
nssm edit 服务名

# 删除服务
nssm remove 服务名 confirm

# 安装 + 启动 + 设自启(一气呵成)
nssm install MyApp "C:\apps\myapp.exe" "--config C:\apps\config.yaml"
nssm set MyApp AppDirectory "C:\apps"
nssm set MyApp AppStdout "C:\apps\logs\stdout.log"
nssm set MyApp AppStderr "C:\apps\logs\stderr.log"
nssm set MyApp Start SERVICE_AUTO_START
net start MyApp

nssm install 会弹出 GUI 让你填:

  • Application 路径(你的 exe)
  • Startup directory
  • Arguments
  • I/O 重定向(Logs tab 里把 stdout/stderr 重定向到文件,没配这个进程挂了根本查不到原因
  • Restart behavior(默认是"应用退出时不重启”,要改成"On exit"或"On failure"并设重试次数)

比写 sc.exe 命令或 unit 文件简单一个量级,特别适合把 jar、bat、PowerShell 脚本注册成服务

3.2 PowerShell 原生方式(无 GUI,适合脚本化)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 把可执行文件注册为服务(需要管理员)
New-Service -Name "MyService" `
  -BinaryPathName "C:\apps\myapp.exe --config C:\apps\config.yaml" `
  -DisplayName "My Application" `
  -StartupType Automatic

# 启动
Start-Service MyService

# 设置失败时自动重启(sc.exe 的 failureflag 命令,PowerShell 里没有原生命令)
sc.exe failure "MyService" reset= 60 actions= restart/5000/restart/10000/restart/30000

nssm 优势是自带"应用崩溃自动重启 + 日志重定向”;纯 New-Service 想要这些得自己写恢复脚本。

四、SNMP 监控:装、配置、安全选项丢失、接监控平台

SNMP 在企业网管里出场率仍然很高。Windows Server 装 SNMP 后,“安全"标签页丢失是经典坑。

4.1 完整安装流程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 查询是否已安装
Get-WindowsCapability -Online -Name "SNMP*"
# State: NotPresent 表示未安装
Get-WindowsCapability -Online -Name "WMI-SNMP-Provider.Client~~~~0.0.1.0"

# 安装 SNMP 客户端
Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"

# 安装 WMI SNMP Provider
Add-WindowsCapability -Online -Name "WMI-SNMP-Provider.Client~~~~0.0.1.0"

# 安装 RSAT-SNMP(含管理工具,Server 才有这个 Feature)
Install-WindowsFeature RSAT-SNMP

4.2 修复"安全"选项卡丢失

安装完成后刷新一下组策略

1
gpupdate /force

如果还不行就重启。重启后用管理员身份打开 services.msc,右键 SNMP Service → 属性,应该能看到"安全"标签页,可配置 community(v2c)或用户名(v3)。

4.3 用 Apache HertzBeat 接入 Windows 监控

HertzBeat(Apache 顶级项目,2022-11 毕业)是国产开源的监控告警平台,支持 SNMP 直接拉取 Windows 指标

被监控端(Windows):

  1. 按 4.1 装好 SNMP + WMI Provider
  2. services.msc → SNMP Service → 属性 → 安全
  3. 添加 community:public(v2c 测试用,生产请改复杂字符串)
  4. 接受来自指定 NMS 服务器的 SNMP 包

监控端(HertzBeat):

  1. 登录 HertzBeat Web 控制台
  2. 监控中心 → 新增 → 操作系统 → Windows
  3. 填主机名/IP、SNMP 版本(v2c)、community、采集间隔(默认 60s)
  4. 启用模板:hostNameuptimecpumemorydiskinterface
  5. 提交后等 1-2 个采集周期,Dashboard 即可看到数据

HertzBeat 相比 Zabbix 的优势是配置都在 Web UI,agent 端零配置;劣势是 SNMP 指标不如 Zabbix 默认模板细。

五、文件清理:C 盘减肥必杀技

5.1 关闭休眠文件

Hiberfil.sys 占用 ≈ 物理内存大小(16G 内存 = 16G 占用)。不用休眠功能可以直接关掉:

1
powercfg -h off

关掉后立刻回收几个 G。如果以后想恢复:powercfg -h on服务器/笔记本慎用——笔记本开盖唤醒、Server 断电恢复都依赖休眠。

5.2 虚拟内存 pagefile.sys

不建议直接删(删了会蓝屏),但可以把它从 C 盘挪到 D 盘:

1
2
3
4
系统属性 → 高级 → 性能设置 → 高级 → 虚拟内存 更改
→ 取消"自动管理" → 选 C 盘 → "无分页文件"
→ 选 D 盘 → "系统管理的大小"
→ 重启

5.3 磁盘可视化分析

SpaceSniffer(免安装、绿色软件)是看"哪个文件夹在偷空间"的利器。treemap 视图一眼就能找到几十 G 的"未知文件夹”。配合 WizTree(NTFS MFT 直读,速度比 SpaceSniffer 快一个量级)双剑合璧。

六、环境变量与代理

6.1 命令行代理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# CMD 临时设置
set http_proxy=http://127.0.0.1:1081
set https_proxy=http://127.0.0.1:1081

# PowerShell 临时设置
$env:http_proxy = "http://127.0.0.1:1081"
$env:https_proxy = "http://127.0.0.1:1081"

# PowerShell 永久设置(用户级)
[Environment]::SetEnvironmentVariable("http_proxy", "http://127.0.0.1:1081", "User")
[Environment]::SetEnvironmentVariable("https_proxy", "http://127.0.0.1:1081", "User")

Python pip 不支持 socks5 代理。要么走 HTTP 代理,要么用 pip install --proxy=http://... 显式指定。Scoop/winget 同样走 HTTP_PROXY/HTTPS_PROXY 环境变量。

6.2 永久环境变量

1
2
3
4
5
6
7
8
9
# 用户级
[Environment]::SetEnvironmentVariable("MY_VAR", "value", "User")

# 系统级(需要管理员)
[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk-17", "Machine")

# 追加到现有 PATH(而不是覆盖!)
$current = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$current;C:\my\bin", "User")

七、命令行工具与软件分类(2022 版)

7.1 包管理器:winget / choco / scoop 三足鼎立

2022 年 Windows 原生包管理器终于成气候了,已经不用再去 Ninite 或手动下 .msi

工具出品方优势适合
winget微软官方(2020-05 起随 App Installer 内置)系统自带、msstore 源、企业可私有源个人日常、批量脚本
chocoChocolatey 社区仓库最大(9000+ 包)、成熟稳定开发机、CI 服务器
scoop社区绿色安装、装在用户目录、不污染 PATH开发者、命令行控

winget 常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 搜索
winget search "nodejs"

# 安装(含 msstore 源和 winget 仓库)
winget install --id Microsoft.PowerShell -e
winget install --id Git.Git -e --source winget
winget install --id Microsoft.VisualStudioCode -e

# 升级全部
winget upgrade --all

# 卸载
winget uninstall --id Git.Git

# 导出/导入(机器间同步)
winget export -o packages.json
winget import -i packages.json

winget 安装包走 Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle 这个 App Installer 内置,Windows 10 1809+ / Windows 11 默认可用,老系统手动装一下 App Installer 即可。

choco 常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 安装(管理员 PowerShell)
Set-ExecutionPolicy Bypass -Scope Process -Force
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# 改安装路径(默认 C:\ProgramData\chocolatey,SSD 小的话挪去 D 盘)
choco config set --name installLocation --value "D:\soft\choco"

# 装软件
choco install git -y
choco install vscode -y
choco install googlechrome -y

# 升级全部
choco upgrade all -y

scoop 常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 安装(PowerShell,普通用户权限即可)
irm get.scoop.sh | iex

# 加常用 bucket
scoop bucket add extras
scoop bucket add java

# 装
scoop install git
scoop install nodejs-lts
scoop install python@3.11

# 全部升级
scoop update *

三选一建议:日常主力 winget(系统自带),开发环境额外装 scoop(绿色不污染系统),企业批量部署用 choco(成熟 + 私有源支持)。

7.2 实用工具分类速查

类别推荐工具用途
截屏标注Snipaste贴图截图、像素级标注,截图工具事实标准
终端Windows Terminal(微软官方 2019 开源)多 Tab + 分屏 + GPU 加速
SSH 客户端WindTerm(2019 发布,开源免费)
electerm(2017 起,跨平台)
终端 + SFTP + 端口转发一体
下载Motrix(2019 开源,免费)
IDM
多线程下载、BT/磁力
知识管理Obsidian(2020 发布,Markdown + 双链)本地 Markdown、插件丰富
API 调试Apifox(国产,2020 至今)
Postman
HTTP + Mock + 文档 + 团队协作
容器Docker Desktop(2016 至今,WSL2 后端)容器 + Kubernetes 本地集群
内网穿透frp(2016 起,反向代理神器)把内网服务暴露到公网
压缩7-Zip解压各种格式
视频PotPlayer、OBS播放 / 录屏
鼠标YoloMouse改光标样式 / 大小 / 颜色
FTPFileZilla、WinSCP文件传输
IDEVS Code、IntelliJ IDEA编码
文本Notepad++、Sublime Text轻量编辑
数据库Navicat、DBeaver多数据库 GUI
MarkdownTypora写作

7.3 端口与进程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 查 443 端口占用
netstat -aon | findstr "443"
# 最后一位是 PID

# 通过 PID 找程序
tasklist | findstr "1008"

# 通过 PID 杀进程
taskkill /f /pid 4620

# PowerShell 7 等价(更易解析)
Get-NetTCPConnection -LocalPort 443 -State Established |
  Select-Object OwningProcess, @{N='Path';E={(Get-Process -Id $_.OwningProcess).Path}}

Get-NetTCPConnection 是 PowerShell 7+ 原生命令,输出可对象化,比 netstat 字符串解析舒服得多。

八、启用 Administrator 账户

1
2
3
4
5
6
7
8
# CMD(管理员)
net user administrator /active:yes

# 设密码
net user administrator <新密码>

# 注销重新登录
shutdown -l

九、安全模式 & 定时关机

9.1 进入安全模式

1
shutdown /r /o

一分钟后弹出"选择一个选项"界面:

1
疑难解答 → 高级选项 → 启动设置 → 重启

按 F4 进入安全模式,F5 带网络的安全模式。Win10/11 时代按住 F8 进安全模式的老办法已失效

9.2 定时关机

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 300 秒后关机
shutdown -s -t 300

# 带"我要加班"提示
shutdown -s -t 3600 -c "1 小时后自动关机,请保存文件"

# 取消
shutdown -a

# 改成重启
shutdown -r -t 300

十、常见 5 个坑

  1. 远程桌面授权过期直接用 /admin 强登,再清注册表,不要重装系统。
  2. SNMP"安全"选项卡消失gpupdate /force 不行就重启,不要反复重装。
  3. powercfg -h off 后启动变慢:少量机器关掉休眠后冷启动更慢,是正常现象,因为 Windows 把休眠恢复的那部分代码也禁用了。
  4. pip 不走 socks5 代理:socks5 代理需要先转 HTTP,或用 pip install --proxy
  5. mstsc 保存的密码丢了:Win10/11 RDP 凭据默认存放在"凭据管理器 → Windows 凭据"里;遇到读取失败时,先 cmdkey /list 看凭据是否还在,再用 gpedit.msc → “本地计算机策略 → 计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 设备与资源重定向"检查是否被 GPO 禁用。

十一、总结

  • 远程桌面问题:/admin + 注册表清理 是双保险。
  • 注册服务:nssm > PowerShell New-Service,但 nssm 是 GUI,对自动化部署不友好。
  • SNMP 装好却没"安全"选项:gpupdate /force → 重启。接监控平台首选 HertzBeat(国产、UI 友好、SNMP 直拉)。
  • C 盘减肥:powercfg -h off 收益最大。
  • 包管理:winget 系统自带 + scoop 绿色补充 + choco 企业批量,三件套覆盖 90% 装软件场景。
  • 工具链:截屏 Snipaste、终端 Windows Terminal + WindTerm、下载 Motrix、知识库 Obsidian、API Apifox、容器 Docker Desktop、内网穿透 frp

参考资料

使用 Hugo 构建
主题 StackJimmy 设计