2016-12-07 1 views
0

Export-Excelコマンドレットを使用して、関数の出力をExcelにエクスポートしています。次のように私の機能は次のとおりです。関数の戻り対象がPowerShellでExcelにエクスポートされない

function SQLQuery($ServerName, $DBName, $Query) 
{ 
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
    $SqlConnection.ConnectionString = "Server=$ServerName;Database=$DBName;Integrated Security=True" 
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
    $SqlCmd.CommandText = $Query 
    $SqlCmd.Connection = $SqlConnection 
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
    $SqlAdapter.SelectCommand = $SqlCmd 
    $DataSet = New-Object System.Data.DataSet 
    $SqlAdapter.Fill($DataSet) 
    $Output = $DataSet.Tables[0] 
    $SqlConnection.Close() 
    return $Output 
} 

$ResultCost = SQLQuery -ServerName $SName -DBName $DBName -Query (Get-Content -Path $CostQueryPath) 

$ResultCost.Table | Export-Excel -Path $ReportPath 

ので、私は、輸出に$ResultCost.Tableを使用し、ダイレクト出力がExcelにエクスポートされません。しかし、多くの複製がエクスポートされていることがわかります(結果が10レコードの場合、$ResultCost.Tableは10の累乗が10、つまり100レコードです)。直接出力のみをエクスポートするにはどうすればよいですか?そして、最後の5つの不要な列を削除するにはどうすればよいですか?

+1

を試してみてください。たとえば、オブジェクトのリストから重複を除外するには、 'Sort-Object -Unique'を使用します。 –

+0

エクスポートされていないとはどういう意味ですか?試してみるとどうなりますか?最後の5つの不要な列は削除されますか?私はあなたの結果に特定の列を必要としないと思いますか?もしそうなら、QUERY –

+0

'$ ResultCost.Table |ソートオブジェクト - ユニーク| Export-Excel -Path $ ReportPath' は、すべてのレコードを出力からエクスポートしません。しかし、エクスポートするのは1レコードだけです –

答えて

0

データセットを.xlsxファイルにエクスポートする場合は、テーブルではなく行をエクスポートしてみてください。

ので、代わりの$ResultCost.Tables | Export-Excel -Path $ReportPath

は私が一度に一つの質問にこだわる推薦$ResultCost.Tables.Rows | Export-Excel -Path $ReportPath

+0

さらに、最後にExport-Excelが追加する5行を削除しようとしている場合は、 selectステートメント。 – APB

+0

コード: '$ ResultCost.Tables.Rows | Select-Object * -ExcludeProperty RowError、RowState、Table、ItemArray、HasErrors |エクスポート-Excel -Path $ ReportPath' – APB