1

需要帮助解决这个问题:我需要从 MySQL DB 获取表数据,以便在脚本中进一步使用。我正在使用此代码访问 MySQL 数据:

[void][System.Reflection.Assembly]::LoadFrom("C:\Program Files (x86)\MySQL\MySQL Connector Net 6.7.4\Assemblies\v2.0\MySql.Data.dll")
$Connection = New-Object MySql.Data.MySqlClient.MySqlConnection
$Connection.ConnectionString = $ConnectionString
$Connection.Open()
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection)
$DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command)
$DataSet = New-Object System.Data.DataSet
$RecordCount = $dataAdapter.Fill($dataSet,"data") | Out-Null
$Command.Dispose()
$Table=$DataSet.Tables["data"] | FT  -auto
$Connection.Close()
$Table

它给了我珍贵的垃圾:

TASKID TASKTYPE 拳头名称 秒名称 状态
------ -------- -------- -------- ------
1111 1 部门 1 0
2222 2 用户 321 部门 1 0

但是当我尝试时,例如将结果导出到 CSV:

Export-Csv -Path "c:\test.csv" -InputObject $Table

我得到的是:

#TYPE System.Object[]
"Count","Length","LongLength","Rank","SyncRoot","IsReadOnly","IsFixedSize","IsSynchronized"
"6","6","6","1","System.Object[]","False","True","False"

所以当我尝试像这样解析变量中的数据时:

Write-Host $Table
foreach ($Task in $Table) {
    Write-Host $Task.TASKID
}

我得到的是:

Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
Microsoft.PowerShell.Commands.Internal.Format.GroupStartData
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData
Microsoft.PowerShell.Commands.Internal.Format.GroupEndData
Microsoft.PowerShell.Commands.Internal.Format.FormatEndData

谁能帮我解决这个问题?

4

1 回答 1

6

这条线

$Table=$DataSet.Tables["data"] | FT  -auto

FormatStartData将您的数据转换为对象数组。

Format-Table当您要导出数据时,请勿将数据导入其中。试试这个:

$DataSet.Tables["data"] | Export-Csv "c:\test.csv"
于 2013-07-12T11:57:06.693 回答