0

我目前有:

(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

4

2 回答 2

1

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

(...) 4> $OutFileName

或者

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

如果你想结合成功和详细的输出流。

有关详细信息,请参阅about_Redirection

于 2015-05-19T15:15:17.593 回答
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 调用。由于某种原因导致我无法使用“*>”或任何与“>”组合的字符。

也许其他人可以详细说明为什么会这样。

于 2015-05-19T16:00:26.630 回答