微软2006年发布的面向对象Shell和脚本语言,以对象管道(而非文本管道)为核心设计。2016年开源并跨平台支持Linux/macOS,是Windows系统管理和Azure自动化的主要工具。

| 类型 | 面向对象、脚本语言、Shell |
| 发布年份 | 2006年(Windows PowerShell)、2016年(跨平台开源) |
| 开发者 | Jeffrey Snover等(Microsoft) |
Unix shell的管道传输的是文本,每个命令需要解析上一个命令的文本输出。PowerShell传输的是.NET对象,这个差异影响了一切。Get-Process | Where-Object CPU -gt 10 | Select-Object Name, CPU, Id——管道里流动的是Process对象,Where-Object直接访问对象属性CPU而不是解析文本,结果也是对象,可以直接操作。
这让PowerShell对于Windows系统管理极其强大:Get-ADUser返回Active Directory用户对象,Get-EventLog返回事件日志对象,Import-Csv把CSV文件变成对象数组——整个Windows管理API通过cmdlet暴露为统一接口。[1]
2016年,微软将PowerShell Core(基于.NET Core)开源并发布到Linux和macOS,这是微软开源战略转变的缩影。Windows内置的Windows PowerShell(5.1)和跨平台的PowerShell 7.x并行存在,后者功能更新但部分Windows专用cmdlet只在前者可用。
Azure PowerShell模块(Az)和AWS Tools for PowerShell让PowerShell成为云运维自动化的主要工具之一,特别是在企业Windows环境里。Desired State Configuration(DSC)允许用声明式PowerShell描述服务器配置状态,类似Ansible但基于PowerShell。

| 类型 | 面向对象、脚本语言、Shell |
| 发布年份 | 2006年(Windows PowerShell)、2016年(跨平台开源) |
| 开发者 | Jeffrey Snover等(Microsoft) |
登录 后参与讨论
暂无讨论,来发表第一条评论吧