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++
}