🔲 PowerShell
概述:PowerShell 是微软开发的跨平台命令行 Shell 和脚本语言,基于 .NET 运行时。与传统的文本处理 Shell 不同,PowerShell 处理的是 .NET 对象,使其在数据处理和系统管理方面更加强大。
概述
PowerShell 属于 脚本 & 运维语言 分类。PowerShell 7+ 已开源并支持 Windows、Linux 和 macOS 跨平台运行。
语言特点
- 对象管道:命令间传递 .NET 对象而非纯文本,保留结构化数据
- 统一命名:Cmdlet 采用"动词-名词"命名规范(如
Get-Process) - 强类型系统:基于 .NET 类型系统,支持类型检查和转换
- 远程管理:原生支持 WinRM/SSH 远程执行
- 跨平台:PowerShell 7+ 支持 Windows/Linux/macOS
Hello World
powershell
Write-Host "Hello, World!"基础语法
变量与数据类型
powershell
# 变量以 $ 开头
$age = 25
$name = "PowerShell"
$price = 99.99
$isActive = $true
# 强类型变量
[int]$count = 10
[string]$message = "Hello"
# 数组
$fruits = @("Apple", "Banana", "Cherry")
# 哈希表
$person = @{
Name = "Alice"
Age = 30
City = "Beijing"
}控制流
powershell
# if-elseif-else
if ($age -ge 18) {
Write-Host "成年人"
} elseif ($age -ge 12) {
Write-Host "青少年"
} else {
Write-Host "儿童"
}
# for 循环
for ($i = 0; $i -lt 10; $i++) {
Write-Host $i
}
# foreach 循环
foreach ($fruit in $fruits) {
Write-Host $fruit
}
# while 循环
while ($count -gt 0) {
$count--
}
# switch 语句
switch ($day) {
"Monday" { "周一" }
"Tuesday" { "周二" }
default { "其他" }
}函数
powershell
# 函数定义
function Get-Greeting {
param(
[string]$Name = "World"
)
return "Hello, $Name!"
}
# 调用
Get-Greeting -Name "PowerShell"
# 管道函数
function Filter-Even {
process {
if ($_ % 2 -eq 0) { $_ }
}
}
1..10 | Filter-Even常用 Cmdlet
powershell
# 文件操作
Get-ChildItem # 列出文件
Get-Content file.txt # 读取文件
Set-Content file.txt # 写入文件
Copy-Item src dst # 复制
Remove-Item file.txt # 删除
# 进程管理
Get-Process # 查看进程
Stop-Process -Name "app" # 终止进程
# 服务管理
Get-Service # 查看服务
Start-Service -Name "Spooler"
# 系统信息
Get-ComputerInfo # 计算机信息
Get-EventLog -LogName System -Newest 10应用领域
- Windows 管理:系统配置和维护自动化
- Active Directory:用户和权限批量管理
- Azure 运维:Azure 资源管理和自动化部署
- Office 365:企业办公自动化和批量操作
- 安全审计:系统安全检查和合规性验证
- CI/CD:Windows 环境下的构建和部署
开发环境搭建
- Windows 10/11 自带 Windows PowerShell 5.1
- 安装 PowerShell 7+:
winget install Microsoft.PowerShell - Linux:
sudo apt install powershell - 编辑器:VS Code + PowerShell 扩展
- 代码检查:PSScriptAnalyzer 模块
学习路线
- 入门阶段:Cmdlet 基础 → 管道 → 变量和类型 → 条件判断
- 进阶阶段:函数 → 模块 → 远程执行 → 错误处理
- 实战阶段:系统管理脚本 → Azure 自动化 → CI/CD
- 高级阶段:DSC 配置管理 → 自定义模块开发 → 性能优化