Files
DBAdmin/toolbox/Modules/SQLManager.psm1
T
Paweł Domański 04b2b6eeb7 Jun 2, 2026, 3:54 PM
2026-06-02 13:54:37 +00:00

75 lines
2.2 KiB
PowerShell

function Import-DBAToolBoxDependencies {
<#
.SYNOPSIS
Ensures the dbatools module is available and imported.
#>
if (-not (Get-Module -ListAvailable dbatools)) {
throw "The 'dbatools' module is not installed. Please install it using 'Install-Module dbatools'."
}
if (-not (Get-Module dbatools)) {
Import-Module dbatools -ErrorAction Stop
}
}
function Test-SQLConnection {
<#
.SYNOPSIS
Tests connection to a SQL Server instance and returns basic info.
#>
param(
[Parameter(Mandatory=$true)]
[string]$ServerInstance
)
try {
# Using Test-DbaConnection from dbatools
$testResult = Test-DbaConnection -SqlInstance $ServerInstance -ErrorAction Stop
if ($testResult.Connect -eq $true) {
# If connection is successful, get some basic instance info
$instanceInfo = Get-DbaInstance -SqlInstance $ServerInstance -ErrorAction Stop
return @{
Success = $true
Instance = $instanceInfo.Name
Version = $instanceInfo.VersionString
Edition = $instanceInfo.Edition
Status = "Online"
}
} else {
return @{ Success = $false; Error = "Connection failed." }
}
} catch {
return @{ Success = $false; Error = $_.Exception.Message }
}
}
function Get-SQLDatabases {
<#
.SYNOPSIS
Gets database information for a SQL Server instance.
#>
param(
[Parameter(Mandatory=$true)]
[string]$ServerInstance
)
try {
# Using Get-DbaDatabase from dbatools
$databases = Get-DbaDatabase -SqlInstance $ServerInstance -ErrorAction Stop
$dbList = @()
foreach ($db in $databases) {
$dbList += [pscustomobject]@{
Name = $db.Name
Status = $db.Status
Size = $db.Size
RecoveryModel = $db.RecoveryModel
}
}
return $dbList
} catch {
throw "Failed to get databases: $($_.Exception.Message)"
}
}
Export-ModuleMember -Function Import-DBAToolBoxDependencies, Test-SQLConnection, Get-SQLDatabases