PowerShell 每个对象
示例
该ForEach-Objectcmdlet的工作原理类似于该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 }