调用另一个可执行文件并捕获输出
Calling another executable and capturing output
我正在尝试使用 PowerShell 脚本执行 SqlPackage.exe
来更新数据库。问题是它产生了一个新的 CMD window 而我无法有效地捕获输出。
这是我的脚本:
&$SqlPackage "/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)";
其中 SqlPackage = "SQLPackage\SqlPackage.exe";
.
奇怪的是,当我在 Windows 2008 R2 Web 服务器上执行脚本时,输出与 PowerShell 输出内联,这正是我想要的。在我的 Windows 7 机器上它生成了一个新的 CMD window.
如何始终将输出路由到 PowerShell window,或者至少通过管道传输到另一个文件?
编辑
等待过程完成的完整解决方案:
$p = Start-Process $SqlPackage -ArgumentList @("/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)") -NoNewWindow -Wait -Passthru
$p.WaitForExit()
如果将 Start-Process
与 -NoNewWindow
参数一起使用,您应该能够获得所需的结果:
Start-Process $SqlPackage -ArgumentList @("/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)") -NoNewWindow
如果您需要将输出定向到文件,您还可以使用 Start-Process
的 -RedirectStandardOutput
/ -RedirectStandardError
参数
我正在尝试使用 PowerShell 脚本执行 SqlPackage.exe
来更新数据库。问题是它产生了一个新的 CMD window 而我无法有效地捕获输出。
这是我的脚本:
&$SqlPackage "/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)";
其中 SqlPackage = "SQLPackage\SqlPackage.exe";
.
奇怪的是,当我在 Windows 2008 R2 Web 服务器上执行脚本时,输出与 PowerShell 输出内联,这正是我想要的。在我的 Windows 7 机器上它生成了一个新的 CMD window.
如何始终将输出路由到 PowerShell window,或者至少通过管道传输到另一个文件?
编辑
等待过程完成的完整解决方案:
$p = Start-Process $SqlPackage -ArgumentList @("/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)") -NoNewWindow -Wait -Passthru
$p.WaitForExit()
如果将 Start-Process
与 -NoNewWindow
参数一起使用,您应该能够获得所需的结果:
Start-Process $SqlPackage -ArgumentList @("/Action:Script", "/SourceFile:$($Environment.PackageFile)", "/Profile:$($Environment.PublishProfile)", "/OutputPath:$($Environment.ScriptFile)") -NoNewWindow
如果您需要将输出定向到文件,您还可以使用 Start-Process
-RedirectStandardOutput
/ -RedirectStandardError
参数