public/Suspend-UnraidParityCheck.ps1

function Suspend-UnraidParityCheck {
    <#
    .SYNOPSIS
        Pauses a parity check.

    .PARAMETER Array
        Array object (auto-retrieves if not provided).

    .PARAMETER Session
        Unraid session (defaults to current session).

    .EXAMPLE
        Suspend-UnraidParityCheck
    #>

    [CmdletBinding(SupportsShouldProcess)]
    [OutputType('void')]
    param(
        [Parameter(ValueFromPipeline)]
        [UnraidArray]$Array,

        [Parameter()]
        [UnraidSession]$Session = $script:DefaultUnraidSession
    )

    process {
        if (!$Array) { $Array = Get-UnraidArray }

        # Can only pause a check thats currently running, will throw api error otherwise
        if ($Array.ParityStatus -ne "RUNNING") {
            Write-Error "No running parity check found to pause."
            return
        }

        if ($PSCmdlet.ShouldProcess("Unraid Array", "Pause Parity Check")) {
            $gqlQuery = @"
            mutation PauseCheck {
                parityCheck {
                    pause
                }
            }
"@

            $queryResult = Invoke-UnraidQuery -Query $gqlQuery -Session $Session 

            if ($queryResult) { Write-Information "Parity check paused: Progress saved." -InformationAction Continue  }
        }
    }
}