Description

PowerShell script running a simple SQL Query with user defined table formatted output.
This script connects via Ado.Net to a Microsoft SQL Server and queries the product list from the sample database AdventureWorks. The result is printed as a user defined table formatted to the output pane.

Works with MS SQL Server 2005 and higher in all editions.

Script

PowerShell
Skript bearbeiten|{#scriptcode_dlg.remove_script}
<# SYNOPSIS 
      SQL Query with user defined table formatted output 
   DESCRIPTION 
      PowerShell script running a simple SQL Query with user defined table formatted output.  
      This script connects via Ado.Net to a Microsoft SQL Server and queries the product list 
      from the sample database AdventureWorks. The result is printed as a user defined table formatted 
      to the output pane. 
      Works with MS SQL Server 2005 and higher in all editions. 
   NOTES 
      Author  : Olaf Helper 
      Requires: PowerShell Version 2.0, System.Data.SqlClient namespace. 
   LINKS 
      Format-Table: http://technet.microsoft.com/en-us/library/dd315255.aspx      
#> 
 
# Configuration data 
[string] $server    = "MSQL_CH\OL";           # SQL Server Instance 
[string] $database  = "AdventureWorks";         # Database where to update the statistics. 
 
 
# Select-Statement which returns a scalar value; the html page. 
[string] $sql = ` 
"SELECT PRD.ProductNumber, PRD.Name, PRD.Color 
      , PRD.ListPrice, PRD.SellStartDate 
 FROM Production.Product AS PRD 
 ORDER BY PRD.ProductNumber"; 
 
try 
{ 
    # Open ADO.NET Connection with Windows authentification. 
    $con = New-Object System.Data.SqlClient.SqlConnection; 
    $con.ConnectionString = "Data Source=$server;Initial Catalog=$database;Integrated Security=True;"; 
    $con.Open(); 
 
    $adp = New-Object System.Data.SqlClient.SqlDataAdapter($sql$con); 
    $ds  = New-Object System.Data.DataSet; 
    $adp.Fill($ds"Products"); 
    # Close connection immediately. 
    $adp.Dispose(); 
    $con.Close();    
    $con.Dispose(); 
  
    # Defining output format for each column. 
    $fmtProd   =@{label="Product No."  ;alignment="left" ;width=11 ;Expression={$_.ProductNumber};}; 
    $fmtName   =@{label="Product Name" ;alignment="left" ;width=32 ;Expression={$_.Name};}; 
    $fmtColr   =@{label="Color"        ;alignment="left" ;width=12 ;Expression={$_.Color};}; 
    $fmtPric   =@{label="List price"   ;alignment="right";width=10 ;Expression={$_.ListPrice}    ; FormatString="N2";}; 
    $fmtDate   =@{label="Start date"   ;alignment="right";width=10 ;Expression={$_.SellStartDate}; FormatString="yyyy-dd-MM";}; 
     
    Write-Output ($ds.Tables["Products"]) | Format-Table $fmtProd$fmtName$fmtColr$fmtPric$fmtDate; 
      
    $ds.Dispose(); 
} 
catch 
{ 
    Write-Output ($_.Exception.Message) 
}