Toolkit/Public/New-RscMssqlLogBackup.ps1

#Requires -Version 3
function New-RscMssqlLogBackup {
    <#
    .SYNOPSIS
    Triggers an on-demand transaction log backup of a Microsoft SQL Server database.

    .DESCRIPTION
    Initiates an immediate transaction log backup for the specified SQL Server database. Use this to capture the latest log activity before a planned recovery operation or to shorten the recovery point window between scheduled log backups.

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

    .PARAMETER RscMssqlDatabase
    Database object returned from Get-RscMssqlDatabase
    
    .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.

The MSSQL database object to back up. Pipe from Get-RscMssqlDatabase.

    .EXAMPLE
    Trigger a log backup for a specific database.

    $db = Get-RscMssqlDatabase -Name AdventureWorks2019
    New-RscMssqlLogBackup -RscMssqlDatabase $db

    .EXAMPLE
    Pipe the database object directly.

    Get-RscMssqlDatabase -Name AdventureWorks2019 | New-RscMssqlLogBackup
    #>


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

        [Parameter(
            Mandatory = $false,
            ValueFromPipeline = $false,
            HelpMessage = "Return the query object instead of running the query"
        )]
        [Switch]$AsQuery
    )
    Process {
        Write-Debug "- Running New-RscMssqlLogBackup"
        #region Create Query
        $query = New-RscMutation -Gql takeMssqlLogBackup
        $query.Var.input = New-Object -TypeName RubrikSecurityCloud.Types.TakeMssqlLogBackupInput
        $query.Var.input.id = "$($RscMssqlDatabase.Id)"
        #endregion
        
        if ( $AsQuery ) { return $query }
        $result = $query.Invoke()
        $result
    } 
}