PowerShell与命令行
PowerShell 是 Windows 自动化的核心工具。它不是传统纯文本 Shell,而是以对象管道为核心,适合系统管理、批处理和远程运维。
# 1. 学习目标
- 掌握 PowerShell Cmdlet、对象管道、脚本和执行策略。
- 理解 PowerShell、CMD、Windows Terminal 和 WSL 的关系。
- 能编写可维护的 Windows 自动化脚本。
# 2. 知识框架
PowerShell与命令行
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料
PowerShell 的关键思维是“命令输出对象,再由管道传递对象”。这比纯文本解析更适合结构化管理。
# 3. 核心概念
| 主题 | 说明 | 工程关注 |
|---|---|---|
| Cmdlet | PowerShell 的动词-名词命令 | Get-Process、Set-Service |
| 对象管道 | 传递 .NET 对象而不是纯文本 | 筛选、排序、格式化 |
| 执行策略 | 控制脚本运行限制 | 安全边界、签名 |
| 远程管理 | WinRM 和 PowerShell Remoting | 批量运维、企业管理 |
# 4. 机制与实践
- 脚本中优先使用明确参数,不依赖交互式提示。
- 批量修改前使用 -WhatIf 或先查询目标集合。
- 输出给人看和输出给程序处理要分开设计。
# 5. 常用命令与工具
| 命令或工具 | 作用 | 使用建议 |
|---|---|---|
Get-Process | 查看进程对象 | 可继续筛选排序 |
Get-Service \| Where-Object Status -eq Running | 查看运行中服务 | 对象管道示例 |
Get-Help Get-Process -Online | 打开在线帮助 | 学习 Cmdlet 参数 |
# 6. 常见误区
- 把 PowerShell 当 CMD:PowerShell 命令、转义、变量和管道语义不同。
- 滥用 Format-Table 后再处理:Format-* 会改变输出对象,后续脚本处理会出问题。
- 忽略执行策略:脚本可能因为策略、签名或权限无法运行。
# 7. 进阶研究方向
- 学习 PowerShell 高级函数、模块、错误处理和 Pester 测试。
- 研究 PowerShell Remoting、JEA 和 DSC。
- 把常见 Windows 运维动作封装成团队模块。
# 8. Tips 快问快答
Q:PowerShell 和 CMD 最大区别是什么?
A:PowerShell 管道传递对象,CMD 主要处理文本。
Q:为什么脚本不能运行?
A:可能受执行策略、签名、文件来源、权限或路径影响。
Q:什么时候用 WSL?
A:当需要 Linux 工具链或类 Unix 环境时使用,但要注意文件系统和网络差异。
# 9. 总结
PowerShell 是 Windows 从手工操作走向自动化的关键。掌握对象管道和脚本规范后,Windows 管理效率会大幅提升。
上次更新: 2026/06/25, 10:02:19