SqlPackage.exeのワーカープロセスを開始する方法はありますか?ターゲットデータベースはループバックできるように配列に格納されています。同じ)?PowerShellプロセスの処理 - PowerShellループで複数のSqlPackage.exeプロセスを開始する
エラーがなければ、これらのプロセスからのすべての印刷を抑制し、最後にレポートを表示したいと思います。どうすればいい?
今私は(スタートとして)次のようなループを持っている:
$arguments = @(
"/Action:Import",
"/SourceFile:$($bacpacSource)",
"/TargetServerName:$($serverName)"
)
for ($i = 1; $i -lt 4; $i++) {
$targetDatabase = $baseDatabaseName + $i
$arguments += "/TargetDatabaseName:$($targetDatabase)"
Start-Process -FilePath $sqlPackagePath $arguments -NoNewWindow -PassThru
}
私はStart-Process
どこかを発見し、私は、この関数によって返されたオブジェクトを格納し、何とかそれを使用する必要があることを確信しています。私はすべてのプロセスを開始し、すべてのプロセスが終了するのを待っています。その時点で、すべてのプロセスが成功したかどうかを調査します。エラーが発生した場合は、そのプロセスからエラー情報を出力します。現在、すべてのプロセスが同時に印刷され、バッファ全体がすべて終了した後に破損します。
これはPowerShellで可能ですか?
PS:このスクリプトは、.dacpacファイルを使用して更新版を本番環境に展開するためのものですが、この問題はWindowsプロセスとエラーの処理に厳密に関連しています。
EDIT:おそらく、一度に最大量のプロセスを作成して維持し、完了したときに交換する方法が必要になります。それで、いつでもサーバに接続するSqlPackage.exeプロセスが10個しかないとしましょう。 PowerShellでどうすればこのようなbarrier lock
を作成することができますか?
の仕事を見てください:http://wragg.io/tilfmol-4-powershell-jobs/ –