Toolkit/Public/Get-RscMssqlDatabaseFiles.ps1

#Requires -Version 3
function Get-RscMssqlDatabaseFiles {
    <#
    .SYNOPSIS
    Retrieves the file list for a SQL Server database at a given recovery point.

    .DESCRIPTION
    Returns the data and log files that existed for a SQL Server database at a
    specified point in time. This information is needed when performing database
    exports to map files to new locations. Use Get-RscMssqlDatabaseRecoveryPoint
    to obtain a valid recovery date/time.

    .LINK
    Schema reference:
    https://rubrikinc.github.io/rubrik-api-documentation/schema/reference

    .PARAMETER RscMssqlDatabase
    A SQL Server database object, typically obtained from Get-RscMssqlDatabase.

    .PARAMETER RecoveryDateTime
    The recovery point in time. Use Get-RscMssqlDatabaseRecoveryPoint to obtain a valid value.

    .PARAMETER AsQuery
    Return the query object instead of running the query.
    Preliminary read-only queries may still run to gather IDs or
    other data needed to build the main query.

    .EXAMPLE
    # Get database files at a specific recovery point
    $db = Get-RscMssqlDatabase -Name AdventureWorks2019
    Get-RscMssqlDatabaseFiles -RscMssqlDatabase $db -RecoveryDateTime "2024-01-15 08:00:00.000Z"

    .EXAMPLE
    # Get database files at the latest recovery point
    $db = Get-RscMssqlDatabase -Name AdventureWorks2019
    $recoveryPoint = Get-RscMssqlDatabaseRecoveryPoint -RscMssqlDatabase $db -Latest
    Get-RscMssqlDatabaseFiles -RscMssqlDatabase $db -RecoveryDateTime $recoveryPoint
    #>


    [CmdletBinding()]
    Param(
        [Parameter(
            Mandatory = $true
        )][RubrikSecurityCloud.Types.MssqlDatabase]$RscMssqlDatabase,
        
        [Parameter(
            Mandatory = $true
        )][datetime]$RecoveryDateTime,

        [Parameter(
            Mandatory = $false,
            ValueFromPipeline = $false,
            HelpMessage = "Return the query object instead of running the query"
        )][Switch]$AsQuery
    )
    Process {
        # Determine field profile:
        $fieldProfile = "DEFAULT"
        if ( $Detail -eq $true ) {
            $fieldProfile = "DETAIL"
        }
        Write-Debug "- Running Get-RscMssqlDatabaseFiles"
        
        $query = New-RscQuery -Gql allMssqlDatabaseRestoreFiles -FieldProfile $fieldProfile -Addfield Items.fileType, Items.logicalName, Items.originalName, Items.originalPath
        $query.Var.input = New-Object -TypeName RubrikSecurityCloud.Types.MssqlGetRestoreFilesV1Input
        $query.Var.input.id = $RscMssqlDatabase.Id
        $query.Var.input.time = $RecoveryDateTime

        if ( $AsQuery ) { return $query }
        $result = $query.Invoke()
        $result.Items
    } 
}