我使用以下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();
但输出文件总是为空,输出出现在命令行上,任何想法都要正确写入
答案 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 ...
}