如何在 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+ 次瀏覽

啟動您的 職業生涯

透過完成本課程獲取認證

開始
廣告