如何在 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.