Windows Server PowerShell 入门与基础命令

2026-03-21 12:00:38 1373阅读

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-ServiceSet-ItemProperty)务必先用 Get-* 命令确认当前状态。善用 Get-Help <cmdlet> 查看完整参数说明,搭配 -Examples 参数可直接查看典型用法。

进阶方向包括:编写可复用的 .ps1 脚本、使用 param 块定义输入参数、通过 Try/Catch 实现错误处理、结合 Invoke-Command 远程批量执行,以及利用 Desired State Configuration(DSC) 实现声明式配置管理。

PowerShell 不仅是一组命令,更是一种系统思维——将重复操作抽象为逻辑流程,让服务器管理从“手动点击”走向“自动可控”。掌握其基础,即握住了 Windows Server 稳定、高效、可审计运维的大门。

持续练习、小步验证、文档沉淀,你将在每一次命令执行中,感受到自动化赋予系统管理的真正力量。

文章版权声明:除非注明,否则均为Dark零点博客原创文章,转载或复制请以超链接形式并注明出处。

目录[+]