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
}