什么是invoke-sqlcmd详细输出到文件语法?

时间:2015-05-19 14:56:52

标签: powershell powershell-v3.0 sqlcmd verbose

我目前有:

(invoke-sqlcmd -inputfile (Join-Path $FileDirectory $FileName) -ServerInstance $ServerName -verbose) > $OutFileName

我正在获得输出:

VERBOSE: Changed database context to 'BLUELABEL'

我正在尝试使用详细输出来写入Join-Path函数指定的文件。

我做错了什么?

(使用PowerShell V3)

我确实找到了这个问题的答案,但似乎有所不同,我似乎无法应用相同的想法:Powershell Invoke-Sqlcmd capture verbose output

2 个答案:

答案 0 :(得分:1)

详细输出被写入与常规输出不同的流。 >运算符仅重定向成功输出流。要重定向您需要的详细输出流

(...) 4> $OutFileName

(...) 4>&1 > $OutFileName

如果要组合成功和详细的输出流。

有关详细信息,请参阅about_Redirection

答案 1 :(得分:1)

我最终得到了

sqlps -Command "&{invoke-sqlcmd -inputfile (Join-Path $PSScriptRoot $file) -ServerInstance $server -verbose}" *> "$PSScriptRoot\SqlLog_$file`_$(get-date -f yyyy-MM-dd-hh-mm-ss).txt"

工作。

最初我正在调用另一个脚本并向其传递3个变量,并运行invoke-sqlcmd调用。由于某些原因导致我无法使用“*>”或任何与“>”结合的字符。

也许其他人可以详细说明为什么会出现这种情况。