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 session-scoped unless you specify -Persist. .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 DefaultBlockSize Default BACKUP/RESTORE tuning value for BLOCKSIZE (in bytes). Used when BackupAndRestore is called without -BlockSize. .PARAMETER DefaultBufferCount Default BACKUP/RESTORE tuning value for BUFFERCOUNT. Used when BackupAndRestore is called without -BufferCount. .PARAMETER DefaultMaxTransferSize Default BACKUP/RESTORE tuning value for MAXTRANSFERSIZE (in bytes). Used when BackupAndRestore is called without -MaxTransferSize. .PARAMETER TrustServerCertificate Default TrustServerCertificate value used for SQL connections made by this module. .PARAMETER Encrypt Default SQL client encryption mode used when supported by the installed SqlServer module. .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, [int]$DefaultBlockSize, [int]$DefaultBufferCount, [int]$DefaultMaxTransferSize, [Nullable[bool]]$TrustServerCertificate, [ValidateSet('Optional', 'Mandatory', 'Strict')][string]$Encrypt, [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 ($PSBoundParameters.ContainsKey('DefaultBlockSize')) { Set-Variable -Scope Script -Name DefaultBlockSize -Value $DefaultBlockSize } if ($PSBoundParameters.ContainsKey('DefaultBufferCount')) { Set-Variable -Scope Script -Name DefaultBufferCount -Value $DefaultBufferCount } if ($PSBoundParameters.ContainsKey('DefaultMaxTransferSize')) { Set-Variable -Scope Script -Name DefaultMaxTransferSize -Value $DefaultMaxTransferSize } if ($PSBoundParameters.ContainsKey('TrustServerCertificate')) { Set-Variable -Scope Script -Name SqlConnectionTrustServerCertificate -Value $TrustServerCertificate } if ($PSBoundParameters.ContainsKey('Encrypt')) { Set-Variable -Scope Script -Name SqlConnectionEncrypt -Value $Encrypt } 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) DefaultBlockSize = (Get-Variable -Name DefaultBlockSize -Scope Script -ValueOnly -ErrorAction SilentlyContinue) DefaultBufferCount = (Get-Variable -Name DefaultBufferCount -Scope Script -ValueOnly -ErrorAction SilentlyContinue) DefaultMaxTransferSize = (Get-Variable -Name DefaultMaxTransferSize -Scope Script -ValueOnly -ErrorAction SilentlyContinue) TrustServerCertificate = (Get-Variable -Name SqlConnectionTrustServerCertificate -Scope Script -ValueOnly -ErrorAction SilentlyContinue) Encrypt = (Get-Variable -Name SqlConnectionEncrypt -Scope Script -ValueOnly -ErrorAction SilentlyContinue) } $path = Save-SbrtPersistedConfig -Config $configToPersist Write-Verbose "Persisted config saved to: $path" } } } |