服务器PowerShell教程:从零基础到远程管理Windows服务器
先搞清楚你为什么要用 PowerShell 管服务器
服务器上的 PowerShell 不是装饰品,而是用来替代大量手工点击的。
假设你要批量重启服务、查最近报错、放行一个端口,用图形界面可能要开好几个窗口,用 PowerShell 往往一条命令就能完成。
这篇服务器 PowerShell 教程面向零基础用户,
默认你有一台 Windows Server(2016 及以上版本较常见)或 Windows 10/11 作为客户端,
目标是让你能远程连上服务器并执行常用运维命令。
本文的命令示例仅作演示,请结合自己的环境调整参数;
涉及重启服务、改防火墙等操作前,先确认影响范围并做好备份。
动手前先确认这三件事
确认系统版本和账号权限
在服务器上打开 PowerShell,先执行:
$PSVersionTable
关注 PSVersion 这一行。
如果显示 5.1 或更高版本,通常可以继续。
接着确认你的账号是管理员,否则后面启用远程和改防火墙都会失败。
whoami
启用远程管理(WinRM)
PowerShell 远程默认依赖 WinRM 服务。
在服务器上以管理员身份运行:
Enable-PSRemoting -Force
执行后会看到它启动 WinRM 服务、注册监听器。
如果这一步报错,先看服务是否被禁用:
Get-Service WinRM
状态不是 Running 时,可以尝试:
Start-Service WinRM
Set-Service WinRM -StartupType Automatic
让客户端信任服务器
如果客户端和服务器不在同一个域,直接用 IP 连接可能提示凭据或信任错误,需要把服务器加入受信任列表:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "服务器IP" -Force
把 服务器IP 换成真实地址。
这一步只影响客户端,不需要在服务器上执行。
远程连接和日常命令怎么用
进入交互式会话
在客户端 PowerShell 中执行:
Enter-PSSession -ComputerName 服务器IP -Credential (Get-Credential)
回车后会弹出账号密码输入框,填服务器管理员账号。
成功进入后,命令行提示符会变成类似 [服务器IP]: PS C:\Users\Admin> 的格式。
想退出时输入:
Exit-PSSession
查服务、启停服务
进入远程会话后,查看某个服务状态:
Get-Service -Name Spooler
如果需要重启打印服务:
Restart-Service -Name Spooler
注意:重启服务会影响正在使用该服务的业务,生产环境建议先确认没有正在打印的任务。
看日志定位问题
服务器出问题时,图形界面翻日志很慢,PowerShell 可以直接筛选:
Get-WinEvent -LogName System -MaxEvents 20 | Where-Object {$_.LevelDisplayName -eq "Error"}
这条命令会列出系统日志中最近 20 条里的错误级别事件,适合快速判断是不是系统层面出了问题。
放行一个端口
在服务器上放行 8080 端口:
New-NetFirewallRule -DisplayName "Allow 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
执行后可以用下面这条验证规则是否生效:
Get-NetFirewallRule -DisplayName "Allow 8080"
如果不需要了,删除命令是:
Remove-NetFirewallRule -DisplayName "Allow 8080"
几个容易踩的坑
执行策略拦截脚本:直接运行 .ps1 文件时提示“禁止运行脚本”,可以先查看当前策略:
Get-ExecutionPolicy
如果是 Restricted,临时改为:
Set-ExecutionPolicy RemoteSigned
改完记得确认是否符合公司安全要求,生产服务器不要随意改成 Unrestricted。
权限不足:多数远程和防火墙命令需要管理员权限。
如果报“拒绝访问”,先检查当前会话是不是以管理员身份运行,以及账号是否在管理员组。
网络不通:Enter-PSSession 卡住或超时,先在客户端测试端口:
Test-NetConnection 服务器IP -Port 5985
5985 是 WinRM 默认 HTTP 端口。
不通时检查服务器防火墙、云厂商安全组是否放行。
凭据格式问题:非域环境下,用户名建议写成 服务器IP\Administrator 或 服务器名\Administrator,只写 Administrator 有时会认证失败。
怎么确认你真的配好了
完成以上步骤后,按这个顺序验证:
- 在客户端执行
Test-NetConnection 服务器IP -Port 5985,TcpTestSucceeded为True。 - 执行
Enter-PSSession能正常进入远程会话,提示符显示服务器 IP。 - 在远程会话中执行
Get-Service WinRM,状态为Running。 - 执行
Get-NetFirewallRule -DisplayName "Allow 8080",能看到对应规则。
四项都通过,说明远程管理链路已经可用。
常见疑问
必须用管理员账号吗? 启用 WinRM、改防火墙、重启系统服务这些操作需要管理员权限。
如果只是查看日志,部分命令普通账号也能执行,但远程会话本身通常仍需要相应授权。
PowerShell 和 CMD 能混用吗? 在 PowerShell 里可以调用大部分 CMD 命令,但语法和输出处理方式不同。
建议统一用 PowerShell 的命令,避免管道行为不一致。
远程会话断开后命令会继续跑吗? Enter-PSSession 是交互式会话,断开会话后其中启动的任务可能被终止。
需要长时间运行的任务,考虑用计划任务或其他后台执行方式。
改完执行策略需要重启吗? 通常不需要,设置立即生效。
但已经打开的会话可能需要重新打开才能读取新策略。
服务器 PowerShell 教程的核心不是背命令,而是理解“连得上、有权限、能验证”这三步。
先把远程连接和权限问题解决,后面的服务管理、日志排查、防火墙配置都会顺很多。
遇到报错时,优先回到端口、权限和执行策略这三个方向检查。