データの配列を実行可能プログラムにパイプしていますが、 foreach ループでの呼び出しごとにブロックする必要があります。最初の呼び出しからプログラムを開く前に、ループを離れます。
Set-Alias program "whatever.exe"
foreach ($data in $all_data)
{
$data| %{ program /command:update /path:"$_" /closeonend:2 }
}
データの配列を実行可能プログラムにパイプしていますが、 foreach ループでの呼び出しごとにブロックする必要があります。最初の呼び出しからプログラムを開く前に、ループを離れます。
Set-Alias program "whatever.exe"
foreach ($data in $all_data)
{
$data| %{ program /command:update /path:"$_" /closeonend:2 }
}
私は PowerShell が好きですが、実際に学んだことはありませんInvoke-Command
。したがって、EXE を実行する必要があるときは常に cmd を使用します。入力cmd /?
すると、そのヘルプが表示されます。「c」スイッチを見てください。私はこのようなことをします:
foreach ($data in $all_data){
$data |
Foreach-Object{
cmd /c "whatever.exe" /command:update /path:"$_" /closeonend:2
}
}
気に入らない場合は、cmd /c
ジョブを使用できます。
foreach ($data in $all_data){
$data |
Foreach-Object{
$job = Start-Job -InitializationScript {Set-Alias program "whatever.exe"} -ScriptBlock {program /command:update /path:"$($args[0])" /closeonend:2} -ArgumentList $_
while($job.Status -eq 'Running'){
Start-Sleep -Seconds 3
#Could make it more robust and add some error checking.
}
}
}