PowerShell 是微软开源的跨平台任务自动化框架,支持 Windows/Linux/macOS。基于 .NET Core 构建,cmdlet 输出对象而非文本,语法严谨但功能强大。53k Stars 证明实力,适合系统管理和 DevOps 场景,文末附详细使用教程

💡 什么是 PowerShell

PowerShell 是微软开源的跨平台任务自动化框架,GitHub 上斩获 53.1k Stars,支持 Windows/Linux/macOS 全平台。

很多人对 PowerShell 的印象还停留在「Windows 命令行工具」,实际上它早就开源并跨平台了。基于 .NET Core 构建,输出的是对象而非文本,这点比传统 Shell 高级不少。


🔧 核心亮点

1. 跨平台支持

PowerShell 7+ 实现了真正的跨平台:

  • Windows、macOS、Linux 全覆盖
  • 同一套语法在不同平台通用
  • Alpine、Debian、Ubuntu、RPM 等发行版全覆盖

2. cmdlet 设计

PowerShell 的命令叫「 cmdlet」,命名规则是 动词-名词

# 获取服务
Get-Service

# 停止服务
Stop-Service -Name "nginx"

# 查看进程
Get-Process | Where-Object { $_.CPU -gt 100 }

# 文件操作
Get-ChildItem -Recurse -Filter "*.log"

输出的是对象,可以直接继续管道操作,比 Bash 的纯文本处理方便太多。

3. 面向对象输出

传统 Shell:

# 输出纯文本,处理需要 sed/awk/grep
ps aux | grep nginx | awk '{print $2}'

PowerShell:

# 输出对象,后续处理更直观
Get-Process | Where-Object CPU -gt 100 | Select-Object Id, Name, CPU

4. 强大的脚本能力

PowerShell 脚本 (.ps1) 支持:

  • 变量、循环、条件判断
  • 函数定义和参数
  • 模块导入
  • .NET 类库调用
# 简单的服务监控脚本
while ($true) {
    $services = Get-Service | Where-Object Status -eq 'Running'
    $count = $services.Count
    Write-Host "[$(Get-Date)] Running services: $count"
    Start-Sleep -Seconds 60
}

📥 安装使用

Windows(Windows 10/11 自带):

# 检查版本
$PSVersionTable

# 更新到最新
winget install Microsoft.PowerShell

macOS

# Homebrew 安装
brew install --cask powershell

# 启动
pwsh

Linux (Ubuntu)

# 安装
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install powershell

# 启动
pwsh

Docker 体验

docker run -it mcr.microsoft.com/powershell:latest

🎯 适用场景

适合用 PowerShell 的场景

  1. 跨平台系统管理 - Windows 服务器和 Linux 服务器用同一套脚本
  2. DevOps 自动化 - CI/CD 流程中的自动化任务
  3. 配置管理 - AD、Azure、云资源的批量配置
  4. 日志分析 - 结构化日志处理比 grep/awk 更直观
  5. Windows 专有场景 - AD、Exchange、SharePoint 管理(只能 PowerShell)

不太适合的场景

  • 简单的一次性命令(直接用 Bash 更顺手)
  • 追求启动速度的场景(pwsh 启动比 bash 慢)
  • 纯 Linux 环境(已经熟悉 Bash 的场景)

🔍 与同类工具对比

工具跨平台学习曲线对象输出适用场景
PowerShell✅ Win/Linux/macOS陡峭✅ 强系统管理、DevOps
Bash❌ Unix only平缓❌ 纯文本Linux 日常操作
Zsh❌ Unix only平缓❌ 纯文本Linux 增强交互
Python✅ 全平台中等✅ 强复杂脚本、数据处理

PowerShell 的核心优势:在 Windows 生态和跨平台场景下,比 Bash 更严谨、更面向对象;在需要管理 Windows 服务的场景,是唯一选择。


⚠️ 注意事项

  1. 语法严格 - PowerShell 对大小写不敏感,但语法比 Bash 严格
  2. 编码问题 - 脚本保存用 UTF-8 with BOM,避免中文乱码
  3. 执行策略 - Linux/macOS 默认可能需要 chmod +x script.ps1
  4. 启动速度 - 比 Bash 慢,不适合频繁调用的短命令
  5. 模块生态 - PowerShell Gallery 有大量模块,但质量参差不齐

✅ 总结

PowerShell 是被严重低估的工具。微软把它开源并跨平台后,53k Stars 证明了这东西确实有料。

优点

  • 跨平台一致体验
  • 面向对象处理方便
  • Windows 管理无可替代
  • 模块生态丰富

缺点

  • 学习曲线陡(语法跟 Bash 完全不同)
  • 启动速度慢
  • 在 Linux 下存在感不强

推荐指数:⭐⭐⭐⭐

适合需要跨平台管理或者 Windows 系统管理的用户。如果你只用 Linux 日常操作,Bash/Zsh 够用了;但如果是 DevOps 或 Windows 管理员,PowerShell 值得投入时间学习。

👉 GitHub 仓库
👉 官方文档