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

我试图用less数select语句执行SQL查询,结果返回多个表。 问题是我找不到分开阅读和使用表格的方法。

预期成绩:

在这里输入图像说明

实际结果:(它是逐行打印的)

在这里输入图像说明

目的 :我已经创build了一个脚本,可以创build一个带有多个工作表的空白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;