最近、私たちは完了するのに非常に時間がかかるスクリプトの作業を開始しました。そこでPowerShellのワークフローを掘り下げました。いくつかのドキュメンテーションを読んだ後、私は基本を忘れてしまいました。しかし、私はforeach -parallel
ステートメント内の個々のアイテムに対して[PSCustomObject]
を作成する方法を見つけることができないようです。Foreach-parallelオブジェクト
説明するためにいくつかのコード:
Workflow Test-Fruit {
foreach -parallel ($I in (0..1)) {
# Create a custom hashtable for this specific object
$Result = [Ordered]@{
Name = $I
Taste = 'Good'
Price = 'Cheap'
}
Parallel {
Sequence {
# Add a custom entry to the hashtable
$Result += @{'Color' = 'Green'}
}
Sequence {
# Add a custom entry to the hashtable
$Result += @{'Fruit' = 'Kiwi'}
}
}
# Generate a PSCustomObject to work with later on
[PSCustomObject]$Result
}
}
Test-Fruit
それがうまくいかない部分がSequence
ブロック内から$Result
ハッシュテーブルに値を追加することです。以下にしようと、それはまだ失敗した場合でも:
$WORKFLOW:Result += @{'Fruit' = 'Kiwi'}
これは完全に素晴らしいです!そして、私が探していたもの。 Thom、すばらしい答えをありがとう! :) – DarkLite1
うれしい私は助けることができました! – Thom
$ WORKFLOWに書き込んでいます:並列演算の結果はスレッドセーフですか?インラインスクリプトを実行しているforeach-parallelブロックの場合、両者が同時にこの変数にアクセスしてその結果を書き込もうとする可能性があります。 –