使用PowerShell脚本我尝试执行SqlPackage.exe
来更新数据库。问题是它产生了一个新的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()
答案 0 :(得分:2)
如果您将Start-Process
与-NoNewWindow
参数一起使用,您应该能够获得所需的结果:
Start-Process $SqlPackage -ArgumentList @("/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)") -NoNewWindow
如果您需要将输出定向到文件,您还可以使用-RedirectStandardOutput
-RedirectStandardError
/ Start-Process
参数