Windows Server PowerShell 入门与基础命令
Windows Server PowerShell 入门与基础命令指南
PowerShell 是 Windows Server 系统管理的核心自动化工具,它不仅替代了传统的命令提示符(cmd),更以面向对象、可编程、深度集成 Windows 平台的特性,成为系统管理员日常运维、批量配置与故障排查的首选。对于刚接触 Windows Server 的运维人员或 IT 技术人员而言,掌握 PowerShell 的基本概念与常用命令,是提升工作效率、实现标准化管理的关键第一步。
本文将系统介绍 PowerShell 的运行环境、核心语法特点,并精选 10 个高频实用的基础命令,辅以清晰示例与关键说明,帮助读者快速建立实操能力。所有内容均基于 Windows Server 2016 及以上版本(含 Server 2019、Server 2022),兼容默认安装的 PowerShell 5.1 及 PowerShell 7+(跨平台版)运行时。
一、初识 PowerShell:不是命令行,而是任务自动化引擎
PowerShell 的本质是“基于 .NET 的任务自动化与配置管理框架”。它不输出纯文本,而是传递结构化的 .NET 对象——这意味着你无需解析字符串即可直接访问属性、调用方法、筛选结果。例如,Get-Process 返回的是进程对象集合,而非一串文字;你可以用 | Where-Object 直接按 CPU 占用率过滤,而无需借助 findstr 或正则匹配。
在 Windows Server 中,PowerShell 已预装并设为默认管理接口。建议始终以“管理员身份”启动 PowerShell,尤其执行服务管理、网络配置或系统策略修改类操作。
二、基础命令实践:从查询到控制
以下命令均经实际验证,适用于标准域环境与工作组服务器。请在执行前确认执行策略(可通过 Get-ExecutionPolicy 查看),如需运行本地脚本,可临时设置为 RemoteSigned(推荐):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
1. 查看系统基本信息
获取操作系统版本、处理器架构与内存总量:
# 获取 OS 名称、版本号与安装日期
Get-ComputerInfo | Select-Object OsName, OsVersion, OsInstallDate, CsNumberOfLogicalProcessors, CsTotalPhysicalMemory
2. 列出运行中的服务
筛选状态为“正在运行”的服务,并按启动类型分组统计:
Get-Service | Where-Object {$_.Status -eq 'Running'} |
Group-Object StartType |
Select-Object Name, Count
3. 管理 Windows 防火墙规则
启用/禁用指定入站规则(如远程桌面):
# 启用远程桌面入站规则(名称可能因语言版本略有差异)
Enable-NetFirewallRule -DisplayName "远程桌面*"
# 禁用某条自定义规则
Disable-NetFirewallRule -DisplayName "测试规则-HTTP"
4. 查询磁盘使用情况
以易读格式显示各卷的总容量、已用空间与使用率:
Get-Volume |
Where-Object {$_.DriveType -eq 'Fixed'} |
Select-Object DriveLetter, FileSystemLabel,
@{Name='Size(GB)';Expression={[math]::Round($_.Size/1GB, 2)}},
@{Name='Used(GB)';Expression={[math]::Round($_.SizeRemaining/1GB, 2)}},
@{Name='Used%';Expression={[math]::Round((1 - $_.SizeRemaining/$_.Size)*100, 1)}}
5. 检查网络连接状态
测试与网关或 DNS 服务器的连通性,并记录响应时间:
# 测试默认网关(假设为 192.168.1.1)
Test-NetConnection 192.168.1.1 -InformationLevel Quiet
# 获取详细诊断信息(含路由追踪)
Test-NetConnection google.com -TraceRoute
6. 创建新本地用户账户
添加用户并设置密码永不过期(适用于服务账户场景):
# 创建用户,指定密码(明文仅限测试环境;生产中应使用安全字符串)
$Password = ConvertTo-SecureString "P@ssw0rd123" -AsPlainText -Force
New-LocalUser "svc-backup" -Password $Password -FullName "Backup Service Account" -Description "用于每日备份任务"
# 设置密码永不过期
Set-LocalUser "svc-backup" -PasswordNeverExpires $true
7. 查看最近系统日志(事件查看器)
提取过去 24 小时内系统日志中严重级别以上的错误事件:
Get-WinEvent -FilterHashtable @{
LogName = 'System'
Level = 1,2 # 1=致命, 2=错误
StartTime = (Get-Date).AddHours(-24)
} |
Select-Object TimeCreated, Id, LevelDisplayName, ProviderName, Message |
Sort-Object TimeCreated -Descending |
Select-Object -First 10
8. 批量停止指定名称的服务
安全终止所有以 “Spooler” 开头的服务(含打印后台处理程序及其扩展):
Get-Service | Where-Object {$_.Name -like 'Spooler*'} | Stop-Service -Force -PassThru
9. 导出当前 IP 配置到 CSV 文件
便于归档或比对网络变更:
Get-NetIPAddress -AddressFamily IPv4 |
Where-Object {$_.PrefixOrigin -ne 'WellKnown'} |
Select-Object IPAddress, PrefixLength, InterfaceAlias, InterfaceIndex |
Export-Csv -Path "C:\Reports\ipconfig_export.csv" -NoTypeInformation -Encoding UTF8
10. 启动远程桌面服务并开放防火墙端口
一键完成 RDP 服务启用与端口放行(适用于远程管理初始化):
# 启动远程桌面服务
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name 'fDenyTSConnections' -Value 0
# 重启服务使注册表生效
Restart-Service TermService -Force
# 启用防火墙规则
Enable-NetFirewallRule -DisplayGroup "远程桌面"
三、学习建议与进阶路径
初学者应坚持“先查后改”原则:所有修改类命令(如 Stop-Service、Set-ItemProperty)务必先用 Get-* 命令确认当前状态。善用 Get-Help <cmdlet> 查看完整参数说明,搭配 -Examples 参数可直接查看典型用法。
进阶方向包括:编写可复用的 .ps1 脚本、使用 param 块定义输入参数、通过 Try/Catch 实现错误处理、结合 Invoke-Command 远程批量执行,以及利用 Desired State Configuration(DSC) 实现声明式配置管理。
PowerShell 不仅是一组命令,更是一种系统思维——将重复操作抽象为逻辑流程,让服务器管理从“手动点击”走向“自动可控”。掌握其基础,即握住了 Windows Server 稳定、高效、可审计运维的大门。
持续练习、小步验证、文档沉淀,你将在每一次命令执行中,感受到自动化赋予系统管理的真正力量。

