-1

我正在尝试使用 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()
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 回答