摘要:在PowerShell 2.0中, ForEach 语句用于遍历集合中的每个元素,并对每个元素执行相同的操作。它有两种常见的使用形式: ForEach - Object 命令和 foreach 语言结构。
在PowerShell 2.0中, ForEach 语句用于遍历集合中的每个元素,并对每个元素执行相同的操作。它有两种常见的使用形式: ForEach - Object 命令和 foreach 语言结构。
ForEach - Object 命令
- 文字说明: ForEach - Object 是一个PowerShell命令,通常通过管道接收输入的对象集合,并对集合中的每个对象执行指定的脚本块。它适用于在已有命令输出结果的基础上进行逐对象操作。
- 语法: | ForEach - Object [-Begin ] [-Process ] [-End ] []
- -Begin :可选参数,指定在处理集合中的第一个对象之前执行的脚本块。
- -Process :必选参数,指定对集合中的每个对象执行的脚本块。
- -End :可选参数,指定在处理完集合中的所有对象之后执行的脚本块。
- 实际操作演示:
# 遍历整数数组并输出每个元素的平方
$numbers = 1, 2, 3, 4
$numbers | ForEach - Object {
$_.ToString + " 的平方是 " + ($_ * $_).ToString
}
# 使用 -Begin 和 -End 参数
$files = Get - ChildItem C:\Windows\System32 -Filter *.dll
$files | ForEach - Object -Begin {
Write - Host "开始处理DLL文件"
} -Process {
Write - Host "正在处理文件: $($_.Name)"
} -End {
Write - Host "所有DLL文件处理完毕"
}
在第一个示例中,通过管道将整数数组 $numbers 传递给 ForEach - Object ,在脚本块中计算并输出每个数字的平方。在第二个示例中,获取 C:\Windows\System32 目录下所有的 .dll 文件, -Begin 脚本块在开始处理文件前输出提示信息, -Process 脚本块对每个文件输出正在处理的文件名, -End 脚本块在所有文件处理完后输出提示信息。
foreach 语言结构
- 文字说明: foreach 是PowerShell的语言结构,用于遍历数组或其他可枚举对象。它在语法上更接近传统编程语言中的循环结构,并且在控制流方面提供了更多的灵活性。
- 语法: foreach ($元素变量 in $集合) { }
- $元素变量 :在每次循环迭代中表示集合中的当前元素。
- $集合 :要遍历的数组或可枚举对象。
- 实际操作演示:
# 遍历字符串数组并输出每个元素的长度
$words = "apple", "banana", "cherry"
foreach ($word in $words) {
Write - Host "单词 $word 的长度是 $($word.Length)"
}
# 遍历自定义对象数组并输出对象属性
$people = @
$person1 = New - Object -TypeName PSObject
$person1 | Add - Member -MemberType NoteProperty -Name Name -Value "Alice" -Force
$person1 | Add - Member -MemberType NoteProperty -Name Age -Value 30 -Force
$people += $person1
$person2 = New - Object -TypeName PSObject
$person2 | Add - Member -MemberType NoteProperty -Name Name -Value "Bob" -Force
$person2 | Add - Member -MemberType NoteProperty -Name Age -Value 25 -Force
$people += $person2
foreach ($person in $people) {
Write - Host "姓名: $($person.Name),年龄: $($person.Age)"
}
在第一个示例中,使用 foreach 遍历字符串数组 $words ,输出每个单词的长度。在第二个示例中,遍历包含自定义对象(表示人)的数组 $people ,输出每个人的姓名和年龄。
来源:瑗瑗课堂