速通WinRM怎么学?这篇掏心窝的干货,看完你也能上手!
说实话,我第一次听到 WinRM 这个词的时候,脑子里全是问号——这玩意儿到底是干嘛的?跟 PowerShell 有啥关系?为啥别人敲几行命令就能远程控制服务器,我连门都摸不着?后来被逼着搞自动化运维,才硬着头皮把这东西啃下来了,今天就来聊聊 速通WinRM怎么学,不整那些虚头巴脑的官方文档腔,纯纯的实战经验,希望能帮你少走点弯路。

先搞明白WinRM到底是个啥,别急着敲命令
哎,我知道你急,但你先别急,很多人一上来就搜“WinRM命令大全”,结果复制粘贴一堆报错,直接劝退。速通WinRM怎么学的第一步,其实是搞懂它的定位。
WinRM,全称 Windows Remote Management,你可以把它理解成 Windows 自带的“远程遥控器”,以前我们远程管理 Windows 服务器,要么用远程桌面(RDP)连上去点鼠标,要么用 PsExec 这类第三方工具,但 RDP 太笨重了,PsExec 又容易被杀毒软件拦截,WinRM 就不一样了,它基于 HTTP/HTTPS 协议,走的是标准端口(5985/5986),还能跟 PowerShell 深度集成,敲一条命令就能在几十台服务器上批量执行操作——爽不爽?
说白了,速通WinRM怎么学,核心就是搞懂“怎么连”和“怎么执行命令”这两件事。
环境配置:别被第一步卡住
我当初踩的最大的坑,就是以为 WinRM 默认开着,结果在客户现场折腾了半天,才发现服务根本没启动,所以这里划重点:
在目标 Windows 服务器上,用管理员权限打开 PowerShell,敲这几条:
Enable-PSRemoting -Force Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force Restart-Service WinRM
第一条是启用 WinRM 服务,第二条是让客户端信任所有主机(生产环境别这么干,测试环境图方便可以),第三条重启服务生效。
然后在你自己的机器上,测试一下能不能连:
Test-WSMan -ComputerName 目标IP
如果返回一堆版本信息,恭喜你,通了!如果报错,别慌,八成是防火墙没放行 5985 端口,或者网络不通,这时候 telnet 目标IP 5985 试一下,能通就说明端口没问题。
速通WinRM怎么学?记住这三个核心命令就够了
很多人学 WinRM 喜欢背一堆命令,其实没必要。速通WinRM怎么学的精髓在于“会用最少的命令干最多的活”,我总结了三个最常用的:
Enter-PSSession —— 交互式远程登录
这个就跟 SSH 一样,敲进去就直接进到远程服务器的命令行里了:
Enter-PSSession -ComputerName 192.168.1.100 -Credential (Get-Credential)
输入用户名密码,回车,你就“站”在远程服务器上了,退出用 Exit-PSSession,这个适合临时排查问题,但批量操作就不太方便了。
Invoke-Command —— 批量执行命令
这个才是 WinRM 的杀手锏!比如你要在 10 台服务器上同时查磁盘剩余空间:
Invoke-Command -ComputerName (Get-Content servers.txt) -ScriptBlock { Get-PSDrive C | Select-Object Free }
一行命令,10 台服务器的结果全回来了,爽不爽?而且它支持并发,速度飞快。
New-PSSession —— 持久会话
如果你要反复在同一个远程会话里执行多条命令,用 New-PSSession 建一个持久连接,然后通过 Invoke-Command -Session 复用,效率更高。
常见坑点:我踩过的,你就别踩了
坑1:Credential 报错
如果你遇到“拒绝访问”或者“凭据无效”,先检查用户名格式,域环境用 域名\用户名,本地用户用 机器名\用户名 或者 .\用户名,别傻乎乎只写个 administrator,有时候真不认。
坑2:TrustedHosts 没配
如果你在非域环境,客户端默认不信任任何远程主机,这时候要么配 TrustedHosts,要么用 HTTPS,我建议测试环境直接 Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force,省事。
坑3:双跳问题
这个稍微进阶一点,如果你从 A 机器连 B 机器,然后想在 B 机器上再连 C 机器,默认会失败,因为 WinRM 不支持“双跳”凭据传递,解决办法是用 CredSSP 或者 Kerberos 委派,这个坑我当年卡了一整天,后来查资料才发现是协议限制。
速通WinRM怎么学?我的建议是……
别光看,动手!找个虚拟机,装个 Windows Server,照着上面的命令敲一遍,报错了就搜,搜不到就试,试不出来就换个思路。速通WinRM怎么学,真没什么捷径,配环境 → 连上去 → 执行命令 → 踩坑 → 填坑”这个循环。
别只盯着 WinRM 本身,它跟 PowerShell 是绑死的,你 PowerShell 越熟,WinRM 用得越溜,所以顺手把 PowerShell 的管道、变量、循环这些基础打牢,绝对事半功倍。
最后说一句,WinRM 虽然香,但安全配置一定要做好,生产环境别用 HTTP,上 HTTPS,端口换成 5986,证书配好,TrustedHosts 别设成 ,安全第一,效率第二,记住了哈!
好了,今天就唠到这,如果你也在学 WinRM,或者遇到啥奇葩报错,欢迎留言交流,咱们一起速通,少走弯路!