function - printed exeption用作返回值

时间:2018-01-29 12:44:17

标签: powershell

我有两个功能

1。 函数getSQLServerData 返回任何sql数据(如果正常 - 返回数据,如果错误 - 打印异常并返回$ null)

2。 函数getAllCustomers 调用函数getSQLServerData ...

@allcustomers = getSQLServerData -conn $connection -query $q

当系统检测到函数getSQLServerData中的异常并将其打印时,会出现此问题。因为打印的exeption用作返回值。

是否存在如何解决问题的明确方法?

我不明白,为什么打印输出用作值,当存在​​有效的返回值时。

PS: 当我想到一个干净的解决方案时,我的意思是任何开关将功能形式模式“所有输出作为返回值”切换为“仅返回值作为返回值”或类似的东西: - )。

function getSQLServerData
{
param(
    [PSObject] $sci,    #SqlConnectionInfo
    [string] $q
)

    if($debug){write-host "processing...    " $q}
    try{
        if($sci.w)
        {
            $connectionString = "Server="+$sci.s+";Database="+$sci.d+";Connect Timeout=3;Integrated Security=True;"
        }
        else
        {
            $connectionString = "Server="+$sci.s+";Database="+$sci.d+";Connect Timeout=3;Integrated Security=False;uid="+$sci.u+"; pwd="+$sci.p+";"
        }
        if($debug){write-host $connectionString}

        $connection = New-Object System.Data.SqlClient.SqlConnection
        $connection.ConnectionString = $connectionString
        $connection.Open()

        $command = $connection.CreateCommand()
        $command.CommandText = $q

        $result = @()
        $result = $command.ExecuteReader()

        $table = new-object "System.Data.DataTable"
        $table.Load($result)
        $connection.Close()

        return $table
    }
    catch [System.Data.SqlClient.SqlException]
    {
        write-host "SQL Error"
        write-host "Exeption: {0}" $_.Exception.Message
      return 1
    }
    catch [System.SystemException]
    {
        write-host "Unknown error"
        write-host "Exeption: {0}" $_.Exception.Message
      return 2
    }
}

0 个答案:

没有答案