PowerShell 从基础到实战 4:从基础语法到实战应用
1.1 基本数组创建
使用 逗号 或 @()
运算符 创建数组:
bash
# 使用逗号创建数组
$fruits = "Apple", "Banana", "Orange"
Write-Host $fruits # 输出: Apple Banana Orange
# 使用 @() 显式声明数组
$numbers = @(1, 2, 3, 4, 5)
Write-Host $numbers # 输出: 1 2 3 4 5
1.2 多维数组
通过嵌套 @()
创建多维数组:
python
# 二维数组(3x3)
$matrix = @(
@(1, 2, 3),
@(4, 5, 6),
@(7, 8, 9)
)
# 访问元素
Write-Host $matrix[1][2] # 输出: 6
1.3 动态添加元素
使用 +=
操作符扩展数组:
bash
$colors = @("Red", "Green")
$colors += "Blue" # 添加单个元素
$colors += @("Yellow", "Purple") # 添加多个元素
Write-Host $colors # 输出: Red Green Blue Yellow Purple
二、PowerShell 访问数组
2.1 索引访问
数组索引从 0 开始:
ini
$letters = @('A', 'B', 'C', 'D')
Write-Host $letters[0] # 输出: A
Write-Host $letters[-1] # 输出: D(负数索引从末尾开始)
2.2 切片操作
使用 ..
操作符获取子数组:
ini
$numbers = 0..9 # 创建 0-9 数组
$subset = $numbers[2..5] # 获取第2到第5个元素
Write-Host $subset # 输出: 2 3 4 5
2.3 遍历数组
使用 foreach
或 for
循环:
perl
# foreach 循环
foreach ($item in $fruits) {
Write-Host "Fruit: $item"
}
# for 循环
for ($i = 0; $i -lt $numbers.Count; $i++) {
Write-Host "Index $i: $($numbers[$i])"
}
三、PowerShell 自定义函数及调用
3.1 定义函数
使用 function
关键字:
sql
function Get-Greeting {
return "Hello, World!"
}
Write-Host (Get-Greeting) # 输出: Hello, World!
3.2 带参数的函数
使用 param
块定义参数:
php
function Add-Numbers {
param (
[int]$a,
[int]$b
)
return $a + $b
}
$result = Add-Numbers -a 3 -b 5
Write-Host "Sum: $result" # 输出: Sum: 8
3.3 可变参数
使用 [params]
接收任意数量参数:
php
function Sum-All {
param (
[Parameter(ValueFromRemainingArguments = $true)]
[int[]]$nums
)
return ($nums | Measure-Object -Sum).Sum
}
$total = Sum-All 1 2 3 4 5
Write-Host "Total: $total" # 输出: Total: 15
四、PowerShell 函数返回值
4.1 返回单个值
默认返回最后一个表达式的值:
bash
function Get-Value {
42 # 隐式返回
}
Write-Host (Get-Value) # 输出: 42
4.2 显式返回
使用 return
关键字:
php
function Is-Even {
param ([int]$num)
return $num % 2 -eq 0
}
Write-Host (Is-Even 4) # 输出: True
4.3 返回多个值
返回数组或哈希表:
ini
function Get-Stats {
return @{
Count = 5
Total = 20
Average = 4
}
}
$stats = Get-Stats
Write-Host "Average: $($stats.Average)" # 输出: Average: 4
五、PowerShell 定义文本
5.1 单引号 vs 双引号
- 单引号:变量不会解析
- 双引号:变量会被解析
bash
$name = "Alice"
Write-Host 'Hello, $name' # 输出: Hello, $name
Write-Host "Hello, $name" # 输出: Hello, Alice
5.2 多行字符串
使用 @""@
定义多行文本:
bash
$message = @"
This is a multi-line
string in PowerShell.
Variables like $name are not expanded.
"@
Write-Host $message
六、PowerShell 实现用户交互
6.1 获取输入
使用 Read-Host
:
bash
$name = Read-Host "Enter your name"
Write-Host "Hello, $name"
6.2 获取密码
使用 Read-Host -AsSecureString
:
ruby
$securePassword = Read-Host -AsSecureString "Enter password"
# 转换为明文(仅用于调试)
$plainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($securePassword))
Write-Host "Password: $plainPassword"
6.3 输入验证
结合 while
循环验证输入:
perl
do {
$age = Read-Host "Enter your age (must be >=18)"
if ($age -lt 18) {
Write-Host "Invalid input. Try again." -ForegroundColor Red
}
} while ($age -lt 18)
七、PowerShell 格式化字符串
7.1 使用 -f
运算符
ini
$name = "Bob"
$score = 95
$message = "Name: {0}, Score: {1}" -f $name, $score
Write-Host $message # 输出: Name: Bob, Score: 95
7.2 对齐和格式化
bash
# 左对齐(-10),右对齐(10)
Write-Host "{0,-10} {1,5}" -f "Apple", 1.2
Write-Host "{0,-10} {1,5}" -f "Banana", 3.5
# 数字格式化
Write-Host "Price: {0:C}" -f 19.99 # 输出: Price: $19.99
八、PowerShell String 对象方法
8.1 常用方法
bash
$text = " Hello, PowerShell! "
# 去除空格
$trimmed = $text.Trim()
Write-Host "Trimmed: '$trimmed'"
# 大写/小写转换
Write-Host "Upper: '$($text.ToUpper())'"
Write-Host "Lower: '$($text.ToLower())'"
# 替换内容
$replaced = $text.Replace("PowerShell", "PS")
Write-Host "Replaced: '$replaced'"
# 查找子串
if ($text.Contains("PowerShell")) {
Write-Host "Found PowerShell"
}
# 分割字符串
$words = $text.Split(" ")
Write-Host "Words: $words"
8.2 正则表达式
perl
# 替换所有数字
$result = "abc123def456" -replace "\d", "*"
Write-Host "Replaced: $result" # 输出: Replaced: abc***def***
# 提取匹配项
if ("Email: test@example.com" -match "(\w+)@(\w+).\w+") {
Write-Host "User: $matches[1], Domain: $matches[2]"
}
总结
功能 | 关键点 |
---|---|
数组操作 | 使用 @() 创建数组,通过索引和循环访问元素 |
函数定义与调用 | 使用 function 和 param 定义函数,支持可变参数和返回值 |
字符串处理 | 区分单引号和双引号,使用 @""@ 定义多行文本 |
用户交互 | 使用 Read-Host 获取输入,Read-Host -AsSecureString 处理密码 |
字符串格式化 | 使用 -f 运算符进行格式化,支持对齐、数字格式化等 |
String 对象方法 | 掌握 Trim() , Replace() , Split() 等常用方法,结合正则表达式处理文本 |
通过以上内容的学习,您已掌握了 PowerShell 的核心语法和实用技巧。建议结合实际需求编写脚本,例如自动化部署、日志分析、系统监控等,进一步提升技能!