我使用System.Data.SqlClient从SQL中提取数据,最终将数据集存储到一个变量中:
$SqlQuery = "select * from my_Table"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True"
$SqlConnection.Open()
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$amManagedFolders = New-Object System.Data.DataSet
$SqlAdapter.Fill($dataset)然后,我通过类型为:System.ComponentModel.MarshalByValueComponent的$dataset.Tables[0]访问表
我需要能够使用ForEach来遍历该表,并将结果存储到CustomPSObject中以供以后使用,但是,我不确定要使用什么方法来实现这一点。
发布于 2016-01-18 00:37:35
使用this page时,我发现以下代码很有帮助。我使用一个SQL查询并生成一个包含结果的Excel工作簿。
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$DataSetTable = $DataSet.Tables["Table"]
## - Build the Excel column heading:
[Array] $getColumnNames = $DataSetTable.Columns | Select ColumnName
## - Build column header:
[Int] $RowHeader = 1
foreach ($ColH in $getColumnNames)
....
foreach ($rec in $DataSetTable.Rows)
{
foreach ($Coln in $getColumnNames)
{
## - Next line convert cell to be text only:
$xlsSh.Cells.NumberFormat = "@"
## - Populating columns:
$xlsSh.Cells.Item($rowData, $colData) = $rec.$($Coln.ColumnName).ToString()
$ColData++
}
$rowData++; $ColData = 1
}-Edit,我看到你的评论了您也许能够使the answer适应这个问题
https://stackoverflow.com/questions/34840519
复制相似问题