如何在 PowerShell foreach 并行循环中使用 PSCustomObject?


要在 Foreach 并行循环中使用 PSCustomObject,首先需要考虑如何使用循环内的变量。

$Out = "PowerShell"
ForEach-Object -Parallel{
   Write-Output "Hello.... $($using:Out)"
}

因此,让我们看看能否在 $out 变量中储存或更改一个值。

示例

$Out = @()
ForEach-Object -Parallel{
   $using:out = "Azure"
   Write-Output "Hello....$($using:out) "
}

输出

Line |
   4 | $using:out = "Azure"
     | ~~~~~~~~~~
     | The assignment expression is not valid. The input to an assignment operator must be an object that is able to accept
     | assignments, such as a variable or a property.

错误提示表达无效,所以我们无法直接操作变量。所以我们可以使用另一个方法,为其创建一个临时变量。

$Out = @()
ForEach-Object -Parallel{
   $dict = $using:out
   $dict = "Azure"
   Write-Output "Hello....$dict"
}

同样地,我们可以使用,如下所示所示的临时变量 PSCustomObject

示例

$Out = @()
$vms = "Testvm1","Testvm2","Testvm3"
$vmout = $vms | ForEach-Object -Parallel{
   $dict = $using:out
   $dict += [PSCustomObject]@{
      VMName = $_
      Location = 'EastUS'
   }
   return $dict
}
Write-Output "VM Output"
$vmout

输出

VMName Location
------ --------
Testvm1 EastUS
Testvm2 EastUS
Testvm3 EastUS

更新于: 2021 年 1 月 4 日

3K+ 次浏览

启动您的 职业生涯

通过完成本课程获取认证

开始
广告
© . All rights reserved.