APSQL

Générer un rapport Excel avec PowerShell

Les extensions SQL pour PowerShell(SQLPS) permettent une intéraction facile entre les différentes application grâce au framework .Net

Voici un script PowerShell qui permet de lister les 10 tables de la base Gescom possèdant le plus grande nombre de lignes

$Tables=DIR SQLSERVER:\SQL\ARAVIS\DEFAULT\Databases\Gescom\Tables|Sort-Object -Property RowCount -desc|Select-Object -First 10
$xl=New-Object -comobject Excel.Application

$xl.Visible=$true
$oCulture= [System.Globalization.CultureInfo]"en-US"
$classeur=$xl.Workbooks.psbase.gettype().InvokeMember(
	"Add",[Reflection.BindingFlags]::InvokeMethod,$null,$xl.Workbooks,$null,$oCulture)
$feuille=$classeur.Worksheets.Item(1)
$feuille.psbase.gettype().InvokeMember(
	"Name",[Reflection.BindingFlags]::SetProperty,$null,$feuille,"GT",$oCulture)
$feuille.cells.item(1,1).psbase.gettype().InvokeMember(
	"Value",[Reflection.BindingFlags]::SetProperty,$null,$feuille.cells.item(1,1),"Schéma",$oCulture)
$feuille.cells.item(1,2).psbase.gettype().InvokeMember(
	"Value",[Reflection.BindingFlags]::SetProperty,$null,$feuille.cells.item(1,2),"Table",$oCulture)
$feuille.cells.item(1,3).psbase.gettype().InvokeMember(
	"Value",[Reflection.BindingFlags]::SetProperty,$null,$feuille.cells.item(1,3),"Lignes",$oCulture)
$x=2
Foreach($Table in $Tables){
	$cell1=$feuille.cells.item($x,1)
	$cell1.psbase.gettype().InvokeMember(
		"Value",[Reflection.BindingFlags]::SetProperty,$null,$cell1,$Table.Schema,$oCulture)
	$cell2=$feuille.cells.item($x,2)
	$cell2.psbase.gettype().InvokeMember(
		"Value",[Reflection.BindingFlags]::SetProperty,$null,$cell2,$Table.Name,$oCulture)
	$cell3=$feuille.cells.item($x,3)
	$cell3.psbase.gettype().InvokeMember(
		"Value",[Reflection.BindingFlags]::SetProperty,$null,$cell3,$Table.RowCount,$oCulture)
	$x++
}