public/Resume-UnraidVm.ps1

function Resume-UnraidVm {
    <#
    .SYNOPSIS
        Resumes a paused VM.

    .PARAMETER InputObject
        VM to resume (accepts pipeline).

    .PARAMETER Name
        VM name.

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

    [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = "ByName")]
    [OutputType('void')]
    param(
        [Parameter(Mandatory, ParameterSetName = "ByObject", ValueFromPipeline)]
        [UnraidVm[]]$InputObject,

        [Parameter(Mandatory, ParameterSetName = "ByName", Position = 0)]
        [string]$Name,

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

    process {
        $vms = Resolve-UnraidVm -InputObject $InputObject -Name $Name -ParameterSetName $PSCmdlet.ParameterSetName -Session $Session
        if (!$vms) { return }

        foreach ($vm in $vms) {
            Invoke-UnraidStateChange -Id $vm.Id -Name $vm.Name -Action 'resume' -Type 'vm' -Session $Session -Cmdlet $PSCmdlet
        }
    }
}