Agent Skills
返回列表
WinRM 远程运维 Windows 服务器

WinRM 远程运维 Windows 服务器

IT 运维与安全 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_4c293371/winrm-windows-remote。

技能介绍

解决什么问题

内网里的 Windows 服务器没有好用的自动化通道:RDP 是交互式的,脚本驱动很别扭;SMB 传文件要先配共享。WinRM 虽然是 Windows 原生的远程管理协议,但手工配置 winrm quickconfig、再写一堆 PSRemoting 引导代码,对只是想跑个命令、传个文件的场景来说太重了。

这个技能把 WinRM 封装成脚本里的一次调用,让自动化脚本像操作本机一样操作 Windows 机器。

工作原理与核心能力

  • 凭据不写死:服务器信息保存在本机 scripts/config.json,首次使用时交互式收集;临时换机器可用环境变量 WINRM_HOST、WINRM_USER、WINRM_PASSWORD 覆盖,无需改配置。
  • 三步工作流:先做连通性自检(打印远端主机名/系统/时间);再执行命令;最后传文件。
  • PowerShell 一律先写成 .ps1 文件再交给执行器,避免 bash 吞掉 $ 变量。脚本以 UTF-16LE 编码传输,中文路径和中文输出不会乱码;输出末尾的 RC=0 表示成功,stderr 里的 CLIXML 进度噪声已自动过滤。
  • 文件传输:多文件先 zip 打包 push 上去,再执行 Expand-Archive 解压;大文件下载的变通做法见 reference.md。
  • 附带常用操作速查:按端口查占用、按 PID 杀进程、用计划任务跑长任务并轮询结果、Get-Content -Tail 看日志尾部。

目标机器只需做一次前置配置(管理员执行 winrm quickconfig、防火墙放行 5985/TCP)。

适用边界与注意事项

  • config.json 里是明文密码,仅限本机内网使用;分享技能前务必先删掉它。
  • WinRM 走 HTTP 明文 + NTLM,只在内网用,不要把 5985 暴露到公网。
  • WinRM 本身有机制上的坑:单条命令约 11.5KB 上限、会话可能被 job-object 回收、PS 5.1 的 TLS/编码问题等,全部对策记录在 reference.md,动手前建议先读。
  • 杀进程只认端口查到的 PID,不要按进程名批量 kill —— 容易误伤同名单的其他进程。

使用场景

  • 批量核查几十台内网 Windows 服务器的系统版本、主机名与当前时间,先跑连通性自检筛掉不可达机器
  • 排查某台服务器的端口占用:查 3201 端口的 PID,确认后按 PID Stop-Process 而不是按进程名批量杀
  • 把打包好的补丁 zip push 到远端,用 run_remote.py 执行 Expand-Archive 解压,路径含中文也不乱码
  • 研发机临时连另一台 WinRM 服务器发命令,用环境变量覆盖 WINRM_HOST/WINRM_USER/WINRM_PASSWORD,不动 config.json

适合人员

  • 运维工程师:要在无人值守脚本里批量跑命令、传文件、查状态,不想给每台机器手写 PSRemoting 引导
  • SRE / 自动化开发:CI 流水线里需要连内网 Windows 机器部署或拉日志,依赖 pywinrm、错误码与编码可预期
  • 基础设施负责人:要在内网维护几十台 Windows Server 资产,关心安全边界和 WinRM 的机制坑
  • 临时接手排障的工程师:不熟悉目标机环境,需要快速连通自检并按端口定位进程