2015-02-17 3 views
1

Я запускаю сценарий powershell, который создает соединение db и запрашивает db. , и вывод запроса записывается в html-файл, но в файле я получаю дополнительные столбцы, которые не являются частью вывода запроса, дополнительные столбцы - это rowerror, rowstate, table, itemarray, haserrors. может кто-нибудь предложить, как удалить лишние столбцы.дополнительные столбцы, печатаемые в результате запроса

код:

function Invoke-MySQL { 
    Param(
    [Parameter(
    Mandatory = $true, 
    ParameterSetName = '', 
    ValueFromPipeline = $true)] 
    [string]$Query 
    ) 

    $MySQLAdminUserName = 'dwhuser' 
    $MySQLAdminPassword = 'netapp123' 
    $MySQLDatabase = 'dwh_inventory' 
    $MySQLHost = '10.72.41.60' 
    $ConnectionString = "server=" + $MySQLHost + "; port=3306; uid=" + 
    $MySQLAdminUserName + "; pwd=" + $MySQLAdminPassword + ";  
    database="+$MySQLDatabase 

    Try { 
    [void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data") 
    $Connection = New-Object MySql.Data.MySqlClient.MySqlConnection 
    $Connection.ConnectionString = $ConnectionString 
    $Connection.Open() 

    $Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query,$Connection) 
    $DataAdapter = NewObjectMySql.Data.MySqlClient.MySqlDataAdapter($Command) 
    $DataSet = New-Object System.Data.DataSet 
    $RecordCount = $dataAdapter.Fill($dataSet, "data") 
    $Command.Dispose() 
    #$Table=$DataSet.Tables["data"] | FT -auto 
    $a = "<style>" 
    $a = $a + "HEAD{}" 
    $a = $a + "TABLE{border-width: 1px;border-style: solid;border-color:black;border-collapse: collapse;}" 
    $a = $a + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}" 
    $a = $a + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:PaleGoldenrod}" 
    $a = $a + "</style> 

    $DataSet.Tables["data"] | ConvertTo-HTML -head $a -body "<H2>Data Source Distribution</H2>" | Out-File C:\Test.htm 
    Invoke-Item "C:\Test.htm" 
    Get-WFALogger -Info -message $("OCI query result" + $DataSet.Tables["data"]) 

    } 

    Catch { 
    throw "ERROR : Unable to run query : $query `n$Error[0]" 
    } 

    Finally { 
    $Connection.Close() 
    } 
    } # end function Invoke-MYSQL 

    $result = Invoke-MySQL -Query "select vendor, count(*) as 'No of Data sources' from acq_data_source group by vendor"; 

output: 1st row are the column names and 2nd row are their values 
[vendor] [no of data sources] [rowerror] [rowstate] [table] [itemarray] [haserrors] 
brocade  31       unchanged data SystemObject[] false 

, но только первые две колонки являются частью output.the запроса оставшихся 5 колонок должны быть удалены из output.please помощь по этому вопросу.

ответ

0

Я побежал DataTable в Select-Object и конкретизированы мои именованные столбцы и конвейеру его команды на экспорт первенствовать:

$tbl_a = Invoke-Sqlcmd -Query " 
SELECT [User],[Pool].... 

PS C:\windows> $tbl_a | select user,pool | Export-Excel C:\root\test.xlsx -show

Я все еще учусь, так надеюсь, что это помогает некоторым ,