2016-05-20 24 views
-1

私はそれが欲しい方法で機能するスクリプトを持っていますが、それは遅いです。私はforeachパラレルのワークフローで同じメソッドを使用しようとしましたが、set-variableコマンドはワークフロー内で使用できるものではありません。私はこれをやっているやり方が間違っているのか、私がやっていることを得る良い方法があるのか​​見たいと思っていました。私が並行してリクエストしたいのは、20以上のサーバーに拡張するときにスクリプトを完了するのにかなり時間がかかることがあるからです。以下はPowershellパラレルセット変数

(並列のforeachせずに動作します)スクリプトのダウン易しく書き直さバージョンですが、それは私が働いて得るために必要なものを効果的です:ワークフローでサポートされていない

$servers = @("server1", "server2"); 
foreach ($s in $servers) { 
    $counter_value = get-counter "\\$s\counter_name" 
    Set-Variable -name "{s}counter" -value $counter_value 
    write-host ${server1counter} 
+0

上記のサンプルは動作しません。 –

答えて

0

コマンドのInlineScriptで実行する必要があります。試してみる(テストされていない):

workflow t { 
    $servers = @("server1", "server2"); 
    foreach -parallel ($s in $servers) { 
     inlinescript { 
      $counter_value = get-counter "\\$using:s\counter_name" 
      Set-Variable -name "$($using:s)counter" -value $counter_value 

      #write-host with a PerformanceCounterSampleSet isn't a good combination. You'll only get the typename since it's a complex type (multiple properties etc.) 
      write-host (Get-Variable "$($using:s)counter" -ValueOnly) 
     } 
    } 
} 

t