custom/oldsdk/Get-CVSQLDatabase.ps1
Add-AEnums function Get-CVSQLDatabase { <# .SYNOPSIS Method to retrieve SQL databases protected within the CommServe. .DESCRIPTION This method is implemented with Powershell paging support. If the Name parameter is not provided, this method will output all protected SQL databases. If the Name parameter is provided, SQL databases matching the name will be output. .PARAMETER Name Get SQL database specified by Name. .PARAMETER Id Get SQL database specified by database Id. .PARAMETER ClientName Get SQL databases associated with ClientName. .PARAMETER InstanceName Get SQL databases associated with InstanceName. .PARAMETER InstanceId Get SQL databases associated with InstanceId. .PARAMETER InstanceObject Get SQL databases associated with piped InstanceObject. .PARAMETER First Get SQL instances with paging support -First 20 (20 per page). .PARAMETER Skip Get SQL instances with paging support -First 20 -Skip 5 (20 per page, skip first 5 pages). .PARAMETER IncludeTotalCount Include total count of result record set. .PARAMETER SortColumn Sort SQL databases by: bkpTime, bkpSize, insName, dbName, cName, planName. .PARAMETER SortDescending Sort SQL databases by specified column in descending order; Default is ascending order. .PARAMETER OnlySLA Get only SQL databases with missed SLAs. .PARAMETER ShowSysDB Get SQL databases including system databases. .PARAMETER AllProperties Get SQL databases with all properties. .EXAMPLE Get-CVSQLDatabase .EXAMPLE Get-CVSQLInstance | Get-CVSQLDatabase .EXAMPLE Get-CVClient | Get-CVSQLInstance | Get-CVSQLDatabase .EXAMPLE Get-CVSQLDatabase -IncludeTotalCount -First 20 -Skip 5 (20 per page, skip first 5 pages) .EXAMPLE Get-CVSQLDatabase -OnlySLA .EXAMPLE Get-CVSQLDatabase -Name space-end .EXAMPLE Get-CVSQLDatabase -Name space_end .EXAMPLE Get-CVSQLDatabase -SortColumn bkpSize .EXAMPLE Get-CVSQLDatabase -SortColumn bkpSize -SortDescending .EXAMPLE Get-CVSQLDatabase -AllProperties .OUTPUTS Outputs [PSCustomObject] containing SQL database properties. .NOTES Author: Gary Stoops Company: Commvault #> [CmdletBinding(DefaultParameterSetName = 'Default', SupportsPaging = $True)] [OutputType([PSCustomObject])] param( [Parameter(Mandatory = $False, ParameterSetName = 'ByName')] [ValidateNotNullorEmpty()] [String] $Name, [Parameter(Mandatory = $False, ParameterSetName = 'ById')] [ValidateNotNullorEmpty()] [Int32] $Id, [Parameter(Mandatory = $False, ParameterSetName = 'ByName')] [ValidateNotNullorEmpty()] [String] $ClientName, [Parameter(Mandatory = $False, ParameterSetName = 'ByName')] [ValidateNotNullorEmpty()] [String] $InstanceName, [Parameter(Mandatory = $False, ParameterSetName = 'ById')] [ValidateNotNullorEmpty()] [Int32] $InstanceId, [Parameter(Mandatory = $False, ParameterSetName = 'ByObject', ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True)] [ValidateNotNullorEmpty()] [System.Object] $InstanceObject, [Parameter(Mandatory = $False)] [CVSQLDatabaseSortColumn] $SortColumn = 'dbName', # by what column the result should be sorted [Switch] $SortDescending, [Switch] $OnlySLA, # limit response to databases with missed SLA [Switch] $ShowSysDB, [Switch] $AllProperties <# [Parameter(Mandatory = $False, Position = 0)] [ValidateNotNullorEmpty()] [Int32] $ToTime, [Parameter(Mandatory = $False)] [ValidateNotNullorEmpty()] [String] $SearchTerm #> ) begin { Write-Debug -Message "$($MyInvocation.MyCommand): begin" try { $sessionObj = Get-CVSessionDetail $MyInvocation.MyCommand.Name $endpointSave = $sessionObj.requestProps.endpoint $outputCount = 0 $totalCount = 0 } catch { throw $_ } } process { Write-Debug -Message "$($MyInvocation.MyCommand): process" try { # Get total record count first $sessionObj.requestProps.endpoint = $endpointSave if ($PSCmdlet.ParameterSetName -eq 'ById') { if ($Id -gt 0) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{databaseId}', $Id) } if ($InstanceId -gt 0) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{instanceId}', $InstanceId) } } if ($PSCmdlet.ParameterSetName -eq 'ByName') { if (-not [String]::IsNullOrEmpty($ClientName)) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{clientName}', $ClientName) } if (-not [String]::IsNullOrEmpty($InstanceName)) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{instanceName}', $InstanceName) } if (-not [String]::IsNullOrEmpty($Name)) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{databaseName}', $Name) } } elseif ($PSCmdlet.ParameterSetName -eq 'ByObject') { if ($null -ne $InstanceObject) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{instanceId}', $InstanceObject.insId) } } $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{paging}', 1) $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{startPage}', 0) $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{pageSize}', 0) $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{sortBy}', $SortColumn) if ($SortDescending) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{sortDir}', 'DESC') } else { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{sortDir}', 'ASC') } if ($OnlySLA) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{onlySLA}', 1) } if ($ShowSysDB) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{showSysDB}', 1) } if ($AllProperties) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{propertyLevel}', 11) } $sessionObj.requestProps.endpoint = NullifyGetSQLDatabaseEndpointParams -Endpoint $sessionObj.requestProps.endpoint $headerObj = Get-CVRESTHeader $sessionObj $body = '' $payload = @{} $payload.Add('headerObject', $headerObj) $payload.Add('body', $body) $validate = 'response' $response = Submit-CVRESTRequest $payload $validate if ($response.IsValid) { $totalCount = $response.Content.response.total $pagingObj = ValidatePagingParameters $PSCmdlet.PagingParameters $totalCount } if ($totalCount -gt 0 -and -not $pagingObj.badParams) { do { $sessionObj.requestProps.endpoint = $endpointSave if ($PSCmdlet.ParameterSetName -eq 'ById') { if ($Id -gt 0) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{databaseId}', $Id) } if ($InstanceId -gt 0) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{instanceId}', $InstanceId) } } if ($PSCmdlet.ParameterSetName -eq 'ByName') { if (-not [String]::IsNullOrEmpty($ClientName)) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{clientName}', $ClientName) } if (-not [String]::IsNullOrEmpty($InstanceName)) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{instanceName}', $InstanceName) } if (-not [String]::IsNullOrEmpty($Name)) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{databaseName}', $Name) } } elseif ($PSCmdlet.ParameterSetName -eq 'ByObject') { if ($null -ne $InstanceObject) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{instanceId}', $InstanceObject.insId) } } $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{paging}', $pagingObj.paging) $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{startPage}', $pagingObj.startPage) $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{pageSize}', $pagingObj.pageSize) if ($pagingObj.paging) { $pagingObj.startPage++ } $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{sortBy}', $SortColumn) if ($SortDescending) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{sortDir}', 'DESC') } else { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{sortDir}', 'ASC') } if ($OnlySLA) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{onlySLA}', 1) } if ($ShowSysDB) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{showSysDB}', 1) } if ($AllProperties) { $sessionObj.requestProps.endpoint = $sessionObj.requestProps.endpoint -creplace ('{propertyLevel}', 11) } $sessionObj.requestProps.endpoint = NullifyGetSQLDatabaseEndpointParams -Endpoint $sessionObj.requestProps.endpoint $headerObj = Get-CVRESTHeader $sessionObj $body = '' $payload = @{} $payload.Add('headerObject', $headerObj) $payload.Add('body', $body) $validate = 'SqlDatabase' $response = Submit-CVRESTRequest $payload $validate if ($response.IsValid) { foreach ($database in $response.Content.SqlDatabase) { Write-Output $database $outputCount++ } if ($pagingObj.paging) { if (($pagingObj.startPage * $pagingObj.pageSize) -ge $totalCount) { $pagingObj.paging = 0 } else { Read-Host '[Enter] for next page' } } } else { $pagingObj.paging = 0 } } until (-not $pagingObj.paging) } if ($outputCount -eq 0) { if ($PSCmdlet.ParameterSetName -eq 'ByObject') { Write-Information -InformationAction Continue -MessageData "INFO: $($MyInvocation.MyCommand): no SQL databases found for instance [$($InstanceObject.insName)]" } } } catch { throw $_ } } end { Write-Debug -Message "$($MyInvocation.MyCommand): end" try { if ($PSCmdlet.PagingParameters.IncludeTotalCount) { [double] $accuracy = 1.0 $PSCmdlet.PagingParameters.NewTotalCount($totalCount, $accuracy) } if ($outputCount -eq 0) { if ($OnlySLA) { Write-Information -InformationAction Continue -MessageData "INFO: $($MyInvocation.MyCommand): no SQL databases found with missed SLA" } else { if ($PSCmdlet.ParameterSetName -eq 'ById') { if ($Id -gt 0) { Write-Information -InformationAction Continue -MessageData "INFO: $($MyInvocation.MyCommand): database not found having ID [$Id]" } elseif ($InstanceId -gt 0) { Write-Information -InformationAction Continue -MessageData "INFO: $($MyInvocation.MyCommand): no SQL databases found for instance ID [$InstanceId]" } } elseif ($PSCmdlet.ParameterSetName -eq 'ByName') { if (-not [String]::IsNullOrEmpty($Name)) { Write-Information -InformationAction Continue -MessageData "INFO: $($MyInvocation.MyCommand): database not found having name [$Name]" } elseif (-not [String]::IsNullOrEmpty($InstanceName)) { Write-Information -InformationAction Continue -MessageData "INFO: $($MyInvocation.MyCommand): no SQL databases found for instance [$InstanceName]" } elseif (-not [String]::IsNullOrEmpty($ClientName)) { Write-Information -InformationAction Continue -MessageData "INFO: $($MyInvocation.MyCommand): no SQL databases found for client [$ClientName]" } } elseif ($PSCmdlet.ParameterSetName -ne 'ByObject') { Write-Information -InformationAction Continue -MessageData "INFO: $($MyInvocation.MyCommand): no SQL databases found" } } } } catch { throw $_ } } } function NullifyGetSQLDatabaseEndpointParams([String]$Endpoint) { try { $Endpoint = $Endpoint -creplace ('{paging}', $null) $Endpoint = $Endpoint -creplace ('{startPage}', $null) $Endpoint = $Endpoint -creplace ('{pageSize}', $null) $Endpoint = $Endpoint -creplace ('{clientName}', $null) $Endpoint = $Endpoint -creplace ('{instanceName}', $null) $Endpoint = $Endpoint -creplace ('{instanceId}', $null) $Endpoint = $Endpoint -creplace ('{databaseName}', $null) $Endpoint = $Endpoint -creplace ('{databaseId}', $null) $Endpoint = $Endpoint -creplace ('{sortBy}', $null) $Endpoint = $Endpoint -creplace ('{sortDir}', $null) $Endpoint = $Endpoint -creplace ('{toTime}', $null) $Endpoint = $Endpoint -creplace ('{searchTerm}', $null) $Endpoint = $Endpoint -creplace ('{onlySLA}', $null) $Endpoint = $Endpoint -creplace ('{showSysDB}', $null) $Endpoint = $Endpoint -creplace ('{propertyLevel}', $null) Write-Output $Endpoint } catch { throw $_ } } function NullifyGetSQLInstanceEndpointParams([String]$Endpoint) { try { $Endpoint = $Endpoint -creplace ('{paging}', $null) $Endpoint = $Endpoint -creplace ('{startPage}', $null) $Endpoint = $Endpoint -creplace ('{pageSize}', $null) $Endpoint = $Endpoint -creplace ('{propertyLevel}', $null) $Endpoint = $Endpoint -creplace ('{onlySLA}', $null) $Endpoint = $Endpoint -creplace ('{sortBy}', $null) $Endpoint = $Endpoint -creplace ('{sortDir}', $null) $Endpoint = $Endpoint -creplace ('{searchTerm}', $null) $Endpoint = $Endpoint -creplace ('{instanceName}', $null) $Endpoint = $Endpoint -creplace ('{clientName}', $null) Write-Output $Endpoint } catch { throw $_ } } |