Toolkit/Public/Get-RscMssqlInstance.ps1
#Requires -Version 3 function Get-RscMssqlInstance{ <# .SYNOPSIS Returns information about the SQL Server Instances connected to Rubrik Security Cloud .DESCRIPTION Returns information about the SQL Server Instances connected to Rubrik Security Cloud .LINK Schema reference: https://rubrikinc.github.io/rubrik-api-documentation/schema/reference .PARAMETER List Uses the latest recovery point date and time that Rubrik has for a database .PARAMETER RscHost RscHost object retrieved via Get-RscHost .PARAMETER InstanceName SQL Server Instance Name .PARAMETER Id Used to return a specific SQL Server Instance based on the Id assigned inside of Rubrik .PARAMETER RscCluster RscCluster object retrieved via Get-RscCluster .PARAMETER Detail Changes the data profile. This can affect the fields returned .EXAMPLE Returns a list of all SQL Server Instances connected to RSC Get-RscMssqlInstance -List .EXAMPLE Returns information about the default instance of SQL on a specific host $HostName = "rp-sql19s-001.demo.rubrik.com" $RscHost = Get-RscHost -Name $HostName -OsType Windows $RscMssqlInstance = Get-RscMssqlInstance -RscHost $RscHost .EXAMPLE Returns information about a specific instance of SQL on a specific host $HostName = "rp-sql19s-001.demo.rubrik.com" $RscHost = Get-RscHost -Name $HostName -OsType Windows $RscMssqlInstance = Get-RscMssqlInstance -RscHost $RscHost -InstanceName DEV01 .EXAMPLE Return a RscMssqlInstance Object based on a specific MssqlInstance Id Get-RscMssqlInstance -Id "86da734b-2fee-4fdc-bdc8-a73ab5648f" #> [CmdletBinding( DefaultParameterSetName = "List" )] Param( [Parameter( ParameterSetName = "List", Mandatory = $false )][Switch]$List, [Parameter( ParameterSetName = "RscHost", Mandatory = $false )][RubrikSecurityCloud.Types.PhysicalHost]$RscHost, [Parameter( ParameterSetName = "RscHost", Mandatory = $false )][String]$InstanceName = "MSSQLSERVER", [Parameter( ParameterSetName = "Id", Mandatory = $false, ValueFromPipeline = $false )][String]$Id, [Parameter( Mandatory = $false )][RubrikSecurityCloud.Types.Cluster]$RscCluster, # Common parameter to all parameter sets: [Parameter( Mandatory = $false, ValueFromPipeline = $false )][Switch]$Detail ) Process { # Determine field profile: $fieldProfile = "DEFAULT" if ( $Detail -eq $true ) { $fieldProfile = "DETAIL" } Write-Debug "-Running Get-RscMssqlInstance" #region Create Query switch ( $PSCmdlet.ParameterSetName){ "List"{ Write-Debug "- Creating List Query" $query = New-RscQueryMssql -Op TopLevelDescendants -FieldProfile $fieldProfile $query.Var.filter = @() $query.Var.typeFilter = "PhysicalHost" } "RscHost"{ Write-Debug "- Creating Host Query" $query = New-RscQueryMssql -Op TopLevelDescendants -FieldProfile $fieldProfile # $query.Var.filter = @() # $nameFilter = New-Object -TypeName RubrikSecurityCloud.Types.Filter # $nameFilter.Field = [RubrikSecurityCloud.Types.HierarchyFilterField]::NAME_EXACT_MATCH # $nameFilter.texts = $RscHost.Name # $query.Var.filter += $nameFilter $query.Var.typeFilter = @() $nameFilter = New-Object -TypeName RubrikSecurityCloud.Types.HierarchyObjectTypeEnum $nameFilter.Field = [RubrikSecurityCloud.Types.HierarchyFilterField]::NAME_EXACT_MATCH $nameFilter.texts = $RscHost.Name $query.Var.filter += $nameFilter } "Id" { Write-Debug "- Creating Id Query" $query = New-RscQueryMssql -Op Instance -FieldProfile $fieldProfile -AddField PhysicalPath $query.Var.filter = @() $query.Var.fid = $id } } if($RscCluster){ Write-Debug "- Creating Cluster Filter" $clusterFilter = New-Object -TypeName RubrikSecurityCloud.Types.Filter $clusterFilter.Field = [RubrikSecurityCloud.Types.HierarchyFilterField]::CLUSTER_ID $clusterFilter.texts = $RscCluster.Id $query.Var.filter += $clusterFilter } #endregion $result = $query.Invoke() switch ( $PSCmdlet.ParameterSetName ){ "RscHost" { Write-Debug "- Filtering results based on Instance Name" $result = $result.Nodes.PhysicalChildConnection.Nodes | Where-Object {$_.Name -eq $InstanceName} $result } default{ $result.Nodes.PhysicalChildConnection.Nodes } } } } |