我目前有:
(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
答案 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调用。由于某些原因导致我无法使用“*>”或任何与“>”结合的字符。
也许其他人可以详细说明为什么会出现这种情况。