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
}