什么是 PowerShell?
PowerShell 是一种跨平台(Windows、Linux 和 macOS)的自动化和配置工具, 它由命令行 shell、脚本语言和配置管理框架组成。PowerShell 建立在 .NET 之上,提供强大的工具来管理系统和应用程序。
主要用途
- ✓ 系统管理和自动化
- ✓ 云服务管理
- ✓ DevOps 和 CI/CD
- ✓ 配置管理
平台支持
- ✓ Windows 10/11
- ✓ Windows Server
- ✓ Linux (Ubuntu, CentOS 等)
- ✓ macOS
核心特性
命令行 Shell
交互式命令行环境,支持命令历史、自动补全、多行编辑等功能, 让命令行操作更加高效便捷。
脚本语言
强大的脚本语言,支持变量、函数、控制流、错误处理等编程特性, 可以创建复杂的自动化脚本。
管道和对象
基于 .NET 对象的管道系统,可以轻松地连接和转换命令输出, 实现强大的数据处理能力。
模块系统
丰富的模块生态系统,包含数千个命令和工具, 可以轻松扩展 PowerShell 的功能。
云集成
深度集成 Azure、AWS 等云平台,提供统一的命令行界面管理云资源。
跨平台
一次编写,到处运行。PowerShell Core 支持所有主流操作系统, 实现真正的跨平台自动化。
代码示例
# 获取操作系统信息
Get-ComputerInfo | Select-Object OsName, OsVersion, OsArchitecture
# 获取 CPU 信息
Get-CimInstance -ClassName Win32_Processor | Select-Object Name, MaxClockSpeed, NumberOfCores
# 获取内存信息
Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object TotalPhysicalMemory, Model
# 创建目录
New-Item -Path "C:\Temp\MyFolder" -ItemType Directory -Force
# 查找大文件
Get-ChildItem -Path "C:\" -Recurse -File |
Where-Object { $_.Length -gt 100MB } |
Sort-Object Length -Descending |
Select-Object Name, Length, FullName
# 批量重命名文件
Get-ChildItem -Path "*.txt" |
Rename-Item -NewName { "Backup_" + $_.Name }
# 测试网络连接
Test-Connection -ComputerName google.com -Count 4
# 获取网络适配器信息
Get-NetAdapter | Where-Object { $_.Status -eq "Up" } |
Select-Object Name, Status, LinkSpeed, MacAddress
# 监控网络流量
Get-NetTCPConnection -State Established |
Group-Object RemoteAddress |
Sort-Object Count -Descending |
Select-Object Name, Count -First 10
版本历史
最新版本,增强性能、稳定性和新特性,包括更好的模块支持。
引入实验性功能如并行处理、改进的错误处理等。
PowerShell Core 7.0 正式发布,完全开源并支持跨平台。
开始转向 .NET Core,实现跨平台支持。
首次发布,基于 .NET Framework,仅支持 Windows。