Powershell Write-Host показывает только имя dataTable вместо данных
Я пытаюсь написать сценарий Powershell, который выполняет запрос SQL, содержащийся в файле.sql
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.
Если я вручную создаю DataSet с DataTable в Powershell Console, Write-Host показывает мне данные в строках DataTable, поэтому я не могу понять, почему это не происходит в предыдущем сценарии.
Можете ли вы дать мне несколько подсказок о том, как показывать данные, содержащиеся в таблицах данных, вместо имен таблиц?
Спасибо
1 ответ
Решение
Этот кусок кода был очень полезен для меня, разместив его здесь, если кому-то это нужно.
for ($i = 0; $i -lt $DTSet.Tables.Count; $i++) {
$DTSet.Tables[$i] | format-table | out-host
}
Это дает хороший вывод на экран в виде таблицы.