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 fistNAME secNAME STATUS
------ -------- -------- ------- ------
1111 1 Dep1 0
2222 2 User321 Dep1 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 に答える