Private/Invoke-SqlRecycleBinCommand.ps1
|
function Invoke-SqlRecycleBinCommand { <# .SYNOPSIS Internal wrapper around Invoke-Sqlcmd shared by every SqlRecycleBin cmdlet. .DESCRIPTION Centralizes connection parameter handling (ServerInstance, Database, Credential, trust/encrypt options, timeout) so each public cmdlet only has to build a query or point at a script file. Requires the 'SqlServer' module (Invoke-Sqlcmd) — see this module's manifest RequiredModules. #> [CmdletBinding(DefaultParameterSetName = 'Query')] param( [Parameter(Mandatory)] [string]$ServerInstance, [Parameter(Mandatory)] [string]$Database, [Parameter(Mandatory, ParameterSetName = 'Query')] [string]$Query, [Parameter(Mandatory, ParameterSetName = 'File')] [string]$InputFile, [pscredential]$Credential, [int]$QueryTimeout = 30, [switch]$TrustServerCertificate ) $sqlcmdParams = @{ ServerInstance = $ServerInstance Database = $Database QueryTimeout = $QueryTimeout ErrorAction = 'Stop' } if ($PSCmdlet.ParameterSetName -eq 'File') { $sqlcmdParams['InputFile'] = $InputFile } else { $sqlcmdParams['Query'] = $Query } if ($Credential) { $sqlcmdParams['Username'] = $Credential.UserName $sqlcmdParams['Password'] = $Credential.GetNetworkCredential().Password } # Invoke-Sqlcmd (SqlServer module, recent versions) supports -TrustServerCertificate; # older versions don't, so only pass it through when asked for and available. if ($TrustServerCertificate) { $cmd = Get-Command -Name Invoke-Sqlcmd -ErrorAction SilentlyContinue if ($cmd -and $cmd.Parameters.ContainsKey('TrustServerCertificate')) { $sqlcmdParams['TrustServerCertificate'] = $true } } Invoke-Sqlcmd @sqlcmdParams } |