什么是PowerShell

AI解读 2个月前 硕雀
19 0

PowerShell 是微软开发的一款面向任务自动化和配置管理的 命令行 Shell 与脚本语言,最初于 2006 年随 Windows PowerShell 1.0 推出,随后演进为跨平台的 PowerShell Core(7.x 及以上)‍,可在 Windows、Linux、macOS 上运行。

1. 基本概念

  • 交互式 Shell:提供类似终端的交互界面,支持直接输入命令并即时返回结果。
  • 脚本语言:使用 .ps1 文件保存脚本,支持变量、函数、流程控制等完整编程结构。
  • 基于 .NET:所有命令(cmdlet)和脚本都运行在 .NET(或 .NET Core)运行时之上,能够直接操作 .NET 对象。

2. 核心特性

特性 说明
对象管道(Object Pipeline) 与传统文本管道不同,PowerShell 传递的是 .NET 对象,保留属性和方法,便于后续过滤、排序、选择等操作
Cmdlet 采用 Verb‑Noun(动词‑名词)命名规范的内置命令,如 Get-ProcessSet-Location,每个 cmdlet 都是 .NET 实现的功能单元
模块化 功能通过模块(Module)组织,可自行编写或从 PowerShell Gallery 下载扩展模块
远程管理(Remoting) 通过 WS‑Man/SSH 协议在本地或跨平台机器上执行命令,实现批量管理
执行策略(Execution Policy) 通过策略控制脚本运行安全级别(Restricted、AllSigned、RemoteSigned、Unrestricted 等)
集成开发环境 Windows PowerShell ISE、Visual Studio Code(PowerShell 扩展)等提供语法高亮、调试、代码片段等功能
跨平台 PowerShell 7 基于 .NET Core,支持 Linux、macOS,保持与 Windows 版语法兼容
Desired State Configuration(DSC 声明式配置管理框架,用于定义系统期望状态并自动纠正偏差

3. 发展历程

版本 关键里程碑
PowerShell 1.0 (2006) 首次发布,提供对象管道、基本 cmdlet
PowerShell 2.0 (2009) 引入远程管理、后台作业、模块化、脚本帮助系统
PowerShell 3.0‑5.1 增强管道、改进 ISE、加入 DSC(4.0)
PowerShell Core 6.0 (2018) 基于 .NET Core,首次实现跨平台
PowerShell 7.x (2020‑至今) 完全跨平台、性能提升、兼容 Windows PowerShell 5.1,加入对 Linux 系统管理的原生支持

4. 常见使用场景

  1. 系统管理:批量创建/删除用户、管理服务、查询进程、修改注册表等。
  2. 配置管理:使用 DSC 编写配置脚本,确保服务器状态一致。
  3. 自动化运维:编写脚本实现日志轮转、备份、部署等日常任务。
  4. 云平台交互:通过 Azure PowerShell、AWS PowerShell 模块管理云资源。
  5. DevOps 流程:在 CI/CD 流水线中调用 PowerShell 脚本,实现构建、测试、发布自动化。

5. 入门示例

# 列出本机所有正在运行的进程并按 CPU 使用率排序
Get-Process | Sort-Object CPU -Descending

# 远程执行命令(在目标机器上获取磁盘信息)
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-PSDrive }

# 使用 DSC 定义一个文件的期望状态
Configuration SampleConfig {
    File ExampleFile {
        DestinationPath = "C:\Temp\example.txt"
        Contents        = "Hello, PowerShell!"
        Ensure          = "Present"
    }
}
SampleConfig
Start-DscConfiguration -Path .\SampleConfig -Wait -Verbose

6. 与传统命令行的区别

  • 对象 vs 文本:PowerShell 处理的是结构化对象,避免了文本解析的繁琐;传统 CMD、Bash 主要基于纯文本流。
  • 统一语法:所有系统资源(文件、注册表、证书、WMI、Active Directory 等)均可通过统一的 cmdlet 访问,降低学习成本。
  • 跨平台:PowerShell 7 通过 .NET Core 实现跨平台运行,而传统 Windows CMD 仅限 Windows 环境。

7. 学习资源

  • 官方文档与 PowerShell Gallery(模块下载)
  • 《PowerShell 实战》系列教程、Microsoft Learn 在线课程
  • 社区博客(如 CSDN、博客园)提供大量案例与脚本库

总结:PowerShell 通过 对象管道、丰富的 cmdlet、模块化与跨平台能力,已经成为 Windows 及多平台系统管理员、DevOps 工程师日常工作中不可或缺的自动化工具。它既保留了传统命令行的灵活性,又引入了现代编程语言的结构化特性,使得系统管理更加高效、可维护。

来源:www.aiug.cn
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!