foreach 对象
ForEach-Object
cmdlet 与 foreach
语句的工作方式类似,但是从管道获取其输入。
基本用法
$object | ForEach-Object {
code_block
}
例:
$names = @("Any","Bob","Celine","David")
$names | ForEach-Object {
"Hi, my name is $_!"
}
Foreach-Object
有两个默认别名,foreach
和%
(简写语法)。最常见的是%
,因为 foreach
可能与 foreach 语句混淆。例子:
$names | % {
"Hi, my name is $_!"
}
$names | foreach {
"Hi, my name is $_!"
}
高级用法
Foreach-Object
从替代 foreach
解决方案中脱颖而出,因为它是一个 cmdlet,这意味着它被设计为使用管道。因此,它支持三个脚本块,就像 cmdlet 或高级函数一样:
- 开始 :在循环遍历从管道到达的项目之前执行一次。通常用于创建在循环中使用的函数,创建变量,打开连接(数据库,Web +)等。
- 流程 :每个项目从管道到达执行一次。 正常的 foreach 代码块。当未指定参数时,这是上述示例中使用的默认值。
- 结束 :处理完所有项目后执行一次。通常用于关闭连接,生成报告等。
例:
"Any","Bob","Celine","David" | ForEach-Object -Begin {
$results = @()
} -Process {
#Create and store message
$results += "Hi, my name is $_!"
} -End {
#Count messages and output
Write-Host "Total messages: $($results.Count)"
$results
}