powershell Invoke-Sqlcmd不会将错误写入输出文件

时间:2015-05-24 14:51:47

标签: powershell

我使用以下powershill脚本

Add-PSSnapin SqlServerCmdletSnapin100

$lines = Get-Content _lists.txt
$stream = [System.IO.StreamWriter] "_error.txt"
$stream.Open();
ForEach ($line in $lines)
{
try {

        $out = "_temp"+$line.split(".")[0] + ".txt" ;
        Invoke-Sqlcmd -InputFile $line -ServerInstance "localhost" | Format-Table | Out-File -FilePath $out 
        if(!$?) 
        {
            $stream.WriteLine($out);

        }
    } 
    catch {
          "error when running sql $sql"
          Write-Host($error)
    }
    finally
    {

    }
}
$stream.Close();

但输出文件总是为空,输出出现在命令行上,任何想法都要正确写入

1 个答案:

答案 0 :(得分:0)

调用Invoke-SqlCmd时可以使用“ErrorVariable”common parameter。该参数需要定义可能包含错误消息的变量。它也将存储在$ error数组中。

请注意,变量名称在调用中不以$为前缀...

$sqlErr = $null
Invoke-SqlCmd -ServerInstance $ServerInstance -Database $database -Query $query -ErrorVariable sqlErr -ErrorAction SilentlyContinue | Out-Null
if ($sqlErr) 
{ 
    #Something went wrong ...
}