Powershell - 使用多个 select 语句和结果表执行 SQL 查询的正确方法

Powershell - proper way to execute SQL query with multiple select statements and result tables

我正在尝试使用很少的 select 语句执行 SQL 查询,结果是 returns 多个表。问题是我找不到单独阅读和使用表格的方法。

预期结果:

实际结果:(逐行打印)

目的:我制作了一个脚本,它创建了一个包含多个工作表的空 excel 文件,每个工作表将用于包含询问。 唯一剩下的就是将所需的文本放入工作表中。这只是我的那部分代码:

$ConnectionString = "Data Source=...;Initial Catalog=...;User Id=...;Password=..."
$DBServerName = $ConnectionString.split('=')[1].split(';')[0]
$DBName = $ConnectionString.split('=')[2].split(';')[0]
$DBUser = $ConnectionString.split('=')[3].split(';')[0]
$DBPassword = $ConnectionString.split('=')[4].split(';')[0]

$CurrentFilePath = "C:\SQLqueryWithManyResultsets.sql"

$query = Get-Content -literalPath $CurrentFilePath | Out-String #getting the query string from file

$resultTables = Invoke-Sqlcmd -Query $query -ServerInstance $DBServerName -Database $DBName -DisableVariables -Password $DBPassword -Username $DBUser -ErrorAction Stop

foreach ($result in $resultTables) {
    $result | Format-Table  #where the magic happens
}

我做了很多研究,但我找不到合适的方法来按照我需要的方式存储和读取表格。

试试这个:

Clear-Host;
$objConnection = New-Object System.Data.SqlClient.SqlConnection;
$objConnection.ConnectionString = "...";


$ObjCmd = New-Object System.Data.SqlClient.SqlCommand;
$ObjCmd.CommandText = "...";
$ObjCmd.Connection = $objConnection;
$ObjCmd.CommandTimeout = 0;

$objAdapter = New-Object System.Data.SqlClient.SqlDataAdapter;
$objAdapter.SelectCommand = $ObjCmd;
$objDataSet = New-Object System.Data.DataSet;

$objAdapter.Fill($objDataSet) | Out-Null;

for ($i=0; $i -lt $objDataSet.Tables.Count; $i++) {
    Write-Host ($objDataSet.Tables[$i] | Format-Table | Out-String);
}


$query = $null;

$objDataSet = $null;

$objConnection.Close();
$objConnection = $null;