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
}