Public/Set-DBALibraryConfig.ps1
|
function Set-DBALibraryConfig { <# .SYNOPSIS Sets SqlBackupRestoreTools session configuration. .DESCRIPTION Sets session-scoped configuration values used by BackupAndRestore. This module retains the legacy DBALibrary config cmdlet names for backward compatibility. Settings are not persisted across PowerShell sessions. .PARAMETER DBAInstance SQL Server instance hosting the logging database used when -EnableDbLogging is specified. .PARAMETER DBADatabase Database name used for SQL-backed logging (writes to dbo.Log). Defaults to 'DBA'. .PARAMETER SmtpServer SMTP relay host used for email notifications. .PARAMETER SMTPEnabled Enables/disables email sending. .PARAMETER DefaultBackupPath Default filesystem/UNC directory used when BackupAndRestore is called without -BackupPath or -AzureStorageBackupLocation. .PARAMETER DefaultAzureStorageBackupLocation Default Azure Blob container URL used when BackupAndRestore is called without -BackupPath or -AzureStorageBackupLocation. .PARAMETER Persist Persists the updated configuration to a per-user config file (JSON). On Windows, the file is stored under: - %APPDATA%\SqlBackupRestoreTools\config.json .EXAMPLE Set-DBALibraryConfig -DBAInstance 'SERVER\INSTANCE' -DBADatabase 'DBA' Sets the target instance/database for SQL-backed logging. .EXAMPLE Set-DBALibraryConfig -SMTPEnabled $true -SmtpServer 'smtp.yourdomain.local' Enables email and sets the SMTP relay. .EXAMPLE Set-DBALibraryConfig -DefaultBackupPath '\\fileserver\sqlbackups' Sets a default backup location for filesystem/UNC backups. .EXAMPLE Set-DBALibraryConfig -DefaultBackupPath '\\fileserver\\sqlbackups' -Persist Sets and persists a default backup location (per-user), so it auto-loads in future sessions. #> [CmdletBinding(SupportsShouldProcess)] param( [string]$DBAInstance, [string]$DBADatabase, [string]$SmtpServer, [Nullable[bool]]$SMTPEnabled, [string]$DefaultBackupPath, [string]$DefaultAzureStorageBackupLocation, [switch]$Persist ) if ($PSCmdlet.ShouldProcess('SqlBackupRestoreTools configuration', 'Update')) { if ($PSBoundParameters.ContainsKey('DBAInstance')) { Set-Variable -Scope Script -Name DBAInstance -Value $DBAInstance } if ($PSBoundParameters.ContainsKey('DBADatabase')) { Set-Variable -Scope Script -Name DBADatabase -Value $DBADatabase } if ($PSBoundParameters.ContainsKey('SmtpServer')) { Set-Variable -Scope Script -Name smtpserver -Value $SmtpServer } if ($PSBoundParameters.ContainsKey('SMTPEnabled')) { Set-Variable -Scope Script -Name SMTPEnabled -Value $SMTPEnabled } if ($PSBoundParameters.ContainsKey('DefaultBackupPath')) { Set-Variable -Scope Script -Name DefaultBackupPath -Value $DefaultBackupPath } if ($PSBoundParameters.ContainsKey('DefaultAzureStorageBackupLocation')) { Set-Variable -Scope Script -Name DefaultAzureStorageBackupLocation -Value $DefaultAzureStorageBackupLocation } if ($Persist.IsPresent) { $configToPersist = [pscustomobject]@{ DBAInstance = (Get-Variable -Name DBAInstance -Scope Script -ValueOnly -ErrorAction SilentlyContinue) DBADatabase = (Get-Variable -Name DBADatabase -Scope Script -ValueOnly -ErrorAction SilentlyContinue) SmtpServer = (Get-Variable -Name smtpserver -Scope Script -ValueOnly -ErrorAction SilentlyContinue) SMTPEnabled = [bool](Get-Variable -Name SMTPEnabled -Scope Script -ValueOnly -ErrorAction SilentlyContinue) DefaultBackupPath = (Get-Variable -Name DefaultBackupPath -Scope Script -ValueOnly -ErrorAction SilentlyContinue) DefaultAzureStorageBackupLocation = (Get-Variable -Name DefaultAzureStorageBackupLocation -Scope Script -ValueOnly -ErrorAction SilentlyContinue) } $path = Save-SbrtPersistedConfig -Config $configToPersist Write-Verbose "Persisted config saved to: $path" } } } |