我的catch块被忽略了

时间:2015-03-06 20:13:41

标签: sql powershell try-catch

我有400个要查询的IP地址列表,但它只输出324。

故障排除显示数据库事务卡在catch {}块中。

出于某种原因,它没有输出代码,"没有数据为$ k"

如何排除故障?

foreach ($k in $file_line){


    $SQL = "SELECT ...
    AND [IP_ADDR1_TEXT] = '$k'"


    $cmd = New-Object System.Data.SqlClient.SqlCommand($SQL,$conn)

    $start = Get-Date
    do{
        try{
            $rdr = $NULL
            $rdr = $cmd.ExecuteReader()


            while ($rdr.read()){
                $sql_output += ,@($rdr.GetValue(0), $rdr.GetValue(1), $rdr.GetValue(2), $rdr.GetValue(3), $rdr.GetValue(4), $rdr.GetValue(5),$rdr.GetValue(6))

            }
            $transactionComplete = $true

        }
        catch{

            $transactionComplete = $false
            if (((Get-Date)-$start).TotalSeconds -gt 5) {
                Write-host "No data for $k"
                $transactionComplete = $true
            }

        }

    }until ($transactionComplete)

}

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Powershell ISE或类似工具调试脚本,该工具可让您设置断点并逐步执行脚本。

powershell_ise.exe

有关如何在Powershell ISE中进行调试的说明,请查看:

https://technet.microsoft.com/de-at/library/dd819480.aspx

相关问题