Getting SQL Server version from multiple servers.

  • I have written a script that will loop to get the SQL Server version on multiple servers/instances but it will not output all to a csv file. I am pretty sure it is the foreach command. My script is below. Any help would be appreciated.

    foreach ($svr in Get-Content "C:\DBAScripts\SQLServers.txt")

    {

    $con = "server=$svr;database=master;Integrated Security=sspi"

    $cmd = "select serverproperty('servername') as Name,serverproperty('productversion') as Version,serverproperty('productlevel') ServicePack,serverproperty('edition') as Edition"

    $da = New-Object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)

    $dt = New-Object System.Data.DataTable

    $da.fill($dt)

    $dt | Export-csv C:\DBAScripts\Test.csv

    }

  • Try this:

    $dt | select-object Name,Version,ServicePack,Edition | Export-csv C:\DBAScripts\Test.csv -NoTypeInformation

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato

  • I had my question answered so I thought I would post it here for everyone else.

    # Must call the name of the file as below

    # C:\ PS > .\GetSQLServerVersions3.ps1 | Export-Csv -NoTypeInformation C:\DBAScripts\Test2.csv

    foreach ($svr in Get-Content "C:\DBAScripts\SQLServers.txt")

    {

    $con = "server=$svr;database=master;Integrated Security=sspi"

    $cmd = "select serverproperty('servername') as Name,serverproperty('productversion') as Version,serverproperty('productlevel') ServicePack,serverproperty('edition') as Edition"

    $da = New-Object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)

    $dt = New-Object System.Data.DataTable

    $da.fill($dt) | out-null

    Write-Output $dt

    }

  • Yep, that works as well.

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato

Viewing 4 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic. Login to reply