private/Resolve-UnraidVm.ps1

function Resolve-UnraidVm {
    [CmdletBinding()]
    param(
        [Parameter()]
        [UnraidVm[]]$InputObject,

        [Parameter()]
        [string]$Name,

        [Parameter(Mandatory)]
        [string]$ParameterSetName,

        [Parameter()]
        [UnraidSession]$Session
    )

    process {
        if ($ParameterSetName -eq "ByName") {
            $vmParams = @{ Name = $Name }
            if ($Session) { $vmParams['Session'] = $Session }
            
            $vm = Get-UnraidVm @vmParams | Select-Object -First 1
            if (!$vm) {
                Write-Error "VM '$Name' not found."
                return $null
            }

            return @($vm)
        }

        else { return @($InputObject) }
    }
}