-1

SqlPackage.exeデータベースを更新するために実行しようとしている PowerShell スクリプトを使用しています。問題は、新しい CMD ウィンドウが生成され、出力を効果的にキャプチャできないことです。

これが私のスクリプトです:

&$SqlPackage "/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)";

どこでSqlPackage = "SQLPackage\SqlPackage.exe";

不思議なことに、Windows 2008 R2 Web サーバーでスクリプトを実行すると、出力が PowerShell 出力と一致します。私の Windows 7 マシンでは、新しい CMD ウィンドウが生成されます。

出力を常に PowerShell ウィンドウにルーティングするか、少なくとも別のファイルにパイプするにはどうすればよいですか?

編集

プロセスが完了するのを待つ完全なソリューション:

$p = Start-Process $SqlPackage -ArgumentList @("/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)") -NoNewWindow -Wait -Passthru
$p.WaitForExit()
4

1 に答える 1

2

パラメータを使用するStart-Processと、探している結果を取得できるはずです。-NoNewWindow

Start-Process $SqlPackage -ArgumentList @("/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)") -NoNewWindow

出力をファイルに送信する必要がある場合は、-RedirectStandardOutput/-RedirectStandardErrorパラメータを使用することもできますStart-Process

于 2015-05-07T00:39:24.310 に答える