Powershell Write-Host仅显示dataTable名称而不是数据

时间:2015-07-30 13:05:02

标签: sql-server powershell datatable write-host

我正在尝试编写一个执行包含在.sql文件中的SQL查询的Powershell脚本

Function RunSQLScript ($connstring, $filePath)
{
    $query = get-content  $filePath;

    $DTSet = New-Object System.Data.DataSet;
    $Conn=New-Object System.Data.SQLClient.SQLConnection $connstring;
    $Conn.Open();
    try
    {
        $DataCmd = New-Object System.Data.SqlClient.SqlCommand;
        $MyQuery = $query;
        $DataCmd.CommandText = $MyQuery;
        $DataCmd.Connection = $Conn;
        $DAadapter = New-Object System.Data.SqlClient.SqlDataAdapter;
        $DAadapter.SelectCommand  = $DataCmd;
        $DAadapter.Fill($DTSet) | Out-Null;
        for ($i = 0; $i -lt $DTSet.Tables.Count; $i++) {
           Write-Host $DTSet.Tables[$i];
        }
    }
    finally
    {
        $Conn.Close();
        $Conn.Dispose();
    }

    return $DTSet;
}

内部Write-Host显示DataTable名称而不是DataRows。

如果我在Powershell控制台中手动创建带有DataTable的DataSet,Write-Host会向我显示DataTable行中的数据,因此我无法弄清楚为什么它在前一个脚本中没有这样做。

您能否告诉我一些关于如何显示数据表中包含的数据而不是表名的线索?

谢谢

1 个答案:

答案 0 :(得分:0)

这段代码对我很有帮助,如果有人需要的话,可以在这里发布。

    for ($i = 0; $i -lt $DTSet.Tables.Count; $i++) {
        $DTSet.Tables[$i] | format-table  | out-host
    }

这会在屏幕上产生类似于表格的输出。