如何在 Foreach-Object Parallel 內使用變數?


有兩種不同的型別變數,可以在 foreach parallel 迴圈內使用。一種是在迴圈內宣告的,另一種是在 foreach parallel 迴圈外宣告的。

請注意 − 在此討論的是 Foreach-Object Parallel 迴圈,適用於 PowerShell 版本 7。對於普通 foreach 迴圈,內外部變數都是相同的。

在 Foreach parallel 迴圈內宣告的變數可以直接使用其名稱。例如,

示例

$vms = "TestVm1","TestVM2","TestVm3"
$Vms | ForEach-Object -Parallel{
   $var1 = $_
   Write-Output "Testing VM: $var1"
}

輸出

Testing VM: TestVm1
Testing VM: TestVM2
Testing VM: TestVm3

在上述示例中,$var1foreach parallel 迴圈內宣告,我們可以直接用其名稱來使用它,如所示。但是在以下示例中,在 foreach parallel 迴圈外宣告的 $log 變數,我們可以透過 $Using 關鍵字後跟變數名稱,在迴圈內使用它。

$vms = "TestVm1","TestVM2","TestVm3"
$log = "Application"
$Vms | ForEach-Object -Parallel{
   $var1 = $_
   Write-Output "Checking $($using:log) on $var1"
}

輸出

Checking Application on TestVm1
Checking Application on TestVM2
Checking Application on TestVm3

在上述示例中,在 foreach parallel 迴圈內使用的 $using:log 變數是一個 $log 變數。

更新於: 2021-01-04

3K+ 檢視

開啟您的 職業

完成課程認證

開始學習
廣告
© . All rights reserved.