2016-05-20 3 views
-1

У меня есть сценарий, который функционирует так, как я хочу, но он медленный. Я попытался использовать тот же метод в рабочем процессе с параллельным foreach, но команда set-variable не является чем-то, что можно использовать в рабочем процессе. Я хотел посмотреть, правильно ли я делаю это, и если есть лучший способ получить то, что я делаю. Причина, по которой я хочу выполнять параллельные запросы, заключается в том, что сценарий может занять довольно много времени, когда он будет расширен до 20+ серверов, как и каждый сервер, в свою очередь, который может сделать все за один раз быстрее.Параллельная переменная Powershell

Ниже упрощенная вниз версия сценария (который работает без параллельного Еогеаспа), но это эффективно, что мне нужно, чтобы получить рабочие:

$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 
Смежные вопросы