diff --git a/toolbox/Modules/SQLManager.psm1 b/toolbox/Modules/SQLManager.psm1 index d8d7102..b2d8d0d 100644 --- a/toolbox/Modules/SQLManager.psm1 +++ b/toolbox/Modules/SQLManager.psm1 @@ -22,13 +22,14 @@ function Test-SQLConnection { [string]$ServerInstance ) + $connWarnings = $null try { - # Using Test-DbaConnection from dbatools - $testResult = Test-DbaConnection -SqlInstance $ServerInstance -ErrorAction Stop + # Using Test-DbaConnection from dbatools and suppressing console warnings while capturing them + $testResult = Test-DbaConnection -SqlInstance $ServerInstance -ErrorAction Stop -WarningAction SilentlyContinue -WarningVariable connWarnings - if ($testResult.Connect -eq $true) { + if ($testResult -and $testResult.Connect -eq $true) { # If connection is successful, get some basic instance info - $instanceInfo = Get-DbaInstance -SqlInstance $ServerInstance -ErrorAction Stop + $instanceInfo = Get-DbaInstance -SqlInstance $ServerInstance -ErrorAction Stop -WarningAction SilentlyContinue return @{ Success = $true Instance = $instanceInfo.Name @@ -37,10 +38,18 @@ function Test-SQLConnection { Status = "Online" } } else { - return @{ Success = $false; Error = "Connection failed." } + $errDetail = "Connection failed." + if ($connWarnings) { + $errDetail = "$errDetail ($($connWarnings -join '; '))" + } + return @{ Success = $false; Error = $errDetail } } } catch { - return @{ Success = $false; Error = $_.Exception.Message } + $errMsg = $_.Exception.Message + if ($connWarnings) { + $errMsg = "$errMsg ($($connWarnings -join '; '))" + } + return @{ Success = $false; Error = $errMsg } } } @@ -54,9 +63,10 @@ function Get-SQLDatabases { [string]$ServerInstance ) + $dbWarnings = $null try { - # Using Get-DbaDatabase from dbatools - $databases = Get-DbaDatabase -SqlInstance $ServerInstance -ErrorAction Stop + # Using Get-DbaDatabase from dbatools and suppressing console warnings while capturing them + $databases = Get-DbaDatabase -SqlInstance $ServerInstance -ErrorAction Stop -WarningAction SilentlyContinue -WarningVariable dbWarnings $dbList = @() foreach ($db in $databases) { $dbList += [pscustomobject]@{ @@ -68,7 +78,11 @@ function Get-SQLDatabases { } return $dbList } catch { - throw "Failed to get databases: $($_.Exception.Message)" + $errMsg = $_.Exception.Message + if ($dbWarnings) { + $errMsg = "$errMsg ($($dbWarnings -join '; '))" + } + throw "Failed to get databases: $errMsg" } }