$labServer = "XXX" $inventoryDB = "XXX" #Fetch all the instances to connect to $instanceLookupQuery = "SELECT instance from XXX" $instances = Invoke-Sqlcmd -ServerInstance $labServer -Database $inventoryDB -Query $instanceLookupQuery if($args[0].Length -gt 0 -and $instances -eq $null){ Write-Host "Instance doesn't exist" break } #For each instance, grab the CheckDB results from master.dbo.CheckDB foreach ($instance in $instances){ $CheckDBQuery = "SELECT * FROM master.dbo.CheckDB" Write-Host "Fetching CheckDB results for instance" $instance.instance try{$results = Invoke-Sqlcmd -Query $CheckDBQuery -ServerInstance $instance.instance -ErrorAction Stop -querytimeout 30} catch{Invoke-Sqlcmd -ServerInstance $labServer -Database $inventoryDB -Query "INSERT INTO XXX VALUES('CheckDB','$($instance.instance)','$($_.Exception.Message)',GETDATE())"} #Perform the INSERT in the XXX table only if it returns information if($results.Length -ne 0){ #Build the insert statement $insert = "INSERT INTO XXX VALUES" foreach($result in $results){ $result_text = $result['result'] -replace "'","''" $insert += " ( '"+$result['instance']+"', '"+$result['database']+"', "+$result['size']+", '"+$result_text+"', '"+$result['checkdb_type']+"', '"+$result['data_collection_timestamp']+"', "+$result['completion_time']+", '"+$result['last_good_dbcc']+"' ), " } #Store the results in the local XXX table in our Lab Server instance Invoke-Sqlcmd -Query $insert.Substring(0,$insert.LastIndexOf(',')) -ServerInstance $labServer -Database $inventoryDB } } Write-Host "Done!"