为什么我的powershell输出文件是空白的?

时间:2015-06-04 05:56:48

标签: sql-server powershell sql-server-2008-r2 sqlcmd

对不起,我是Powershell的新手,所以我显然错过了一些相当基本的东西,但我似乎无法解决这个问题。

我有一个调用SQL脚本的PowerShell脚本。我可以让脚本运行,但我也想将输出存储在日志文件中。

这是我的powershell脚本

Add-PSSnapin SqlServerCmdletSnapin100 
Add-PSSnapin SqlServerProviderSnapin100

Invoke-Sqlcmd -inputfile "testscript.sql" -serverinstance '.\sql2008' | Out-file -filepath "testlog.txt"

这是我的testscript.sql

PRINT 'HELLO WORLD'

目前,它会创建testlog.txt文件,但它是空白的。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您想要的数据似乎在详细的数据流中。在PowerShell 3.0及更高版本中,您可以将详细信息流(4)重定向到stdout流(1),然后再将其发送到Out-File。

Invoke-Sqlcmd -inputfile "testscript.sql" -serverinstance '.\sql2008' -verbose 4>&1 | Out-file -filepath "testlog.txt"

有关不同流的说明,请参阅Get-Help about_redirection

有关将错误和详细流重定向到Out-File的讨论,另请参阅Powershell: Out-File

不幸的是,PowerShell 2.0仅支持流0,1,2的重定向。您可以使用[System.Management.Automation.PowerShell]对象来获取其他流。请参阅Powershell Invoke-Sqlcmd capture verbose output

的已接受答案

答案 1 :(得分:1)

您可以将Verbose(以及所有其他控制台输出)保存到文件中,而不会使用Start-Transcript

污染输出流