I would like to modify the following script (created Kyle Neier), found at: http://www.sqlservercentral.com/blogs/kyle-neier/2012/02/03/verifying-last-successful-checkdb-with-powershell-and-smo-sorta/
---------------------------------------------------
---------------------------------------------------
#************************
# LastSuccessfulCheckDB
# Author: Kyle Neier, Perpetual Technologies
# Reports on the last successful checkdb for all databases within all instances provided
#
# $InstanceList file should be a file of SQL instances in either server, server,port or server\instancename
#
#************************
param
(
[string]$InstanceList = "C:\Users\kneier\Documents\Powershell\InstanceList.txt"
)
# Load SMO assembly
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | Out-Null;
#Initialize Array to hold new database objects
$iDatabases = @()
#Loop over each instance provided
foreach ($instance in $(get-content $InstanceList))
{
try
{
"Connecting to $instance" | Write-Host -ForegroundColor Blue
$srv = New-Object "Microsoft.SqlServer.Management.SMO.Server" $instance;
#How many seconds to wait for instance to respond
$srv.ConnectionContext.ConnectTimeout = 5
$srv.get_BuildNumber() | out-Null
}
catch
{
"Instance Unavailable - Could Not connect to $instance." | Write-Host -ForegroundColor Red
continue
}
$srv.ConnectionContext.StatementTimeout = $QueryTimeout
foreach($Database in $srv.Databases)
{
#create object with all string properties
$iDatabase = "" | SELECT InstanceName, DatabaseName, LastSuccessfulCheckDB
#populate object with known values
$iDatabase.InstanceName = $srv.Name
$iDatabase.DatabaseName = $database.Name
try
{
#Get date of last successful checkdb
#executes dbcc dbinfo on database and narrows by dbi_dbcclastknowngood
$database.ExecuteWithResults('dbcc dbinfo() with tableresults').Tables[0] | `
?{$_.Field -eq "dbi_dbccLastKnownGood"}| `
%{$iDatabase.LastSuccessfulCheckDB = [System.DateTime]$_.Value} -ErrorAction Stop
}
catch
{
"CheckDB could not be determined for $instance.$database" | Write-Host -ForegroundColor Red
}
#add the iDatabase object to the array of iDatabase objects
$iDatabases += $iDatabase
}
}
#output all the databases as a table for viewing pleasure
$iDatabases | ft
---------------------------------------------------
---------------------------------------------------
Instead of using a text file of SQL instances, I would like to pull them from a table.
I have another script where I'm connection to SQL and pulling data:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=XXServerXX\SQL999;Database=db11;Integrated Security=True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "select Distinct(servername) from tblserver"
$SqlCmd.Connection = $SqlConnection
$SqlCmd.CommandTimeout = 0
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
But what I can't figure out is how to use these results in place of the static file used in Kyle's script.
-Al H