private/utility/services/Assert-RequiredModule.ps1

function Assert-RequiredModules {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory, ValueFromPipeline)]
        [AllowNull()]
        [Microsoft.PowerShell.Commands.ModuleSpecification[]] $ModuleSpecification,

        [Parameter()]
        [switch] $PassThru
    )

    process {
        foreach ($moduleSpec in $ModuleSpecification) {
            $getModuleParams = @{
                ListAvailable = $true
                FullyQualifiedName = $moduleSpec
            }

            $availableModule = (Get-Module @getModuleParams).Where({$_.Guid -eq $moduleSpec.Guid}, 1) # take only the first match

            if (-not $availableModule) {
                throw ("Required module '{0}' cannot be found in the current `$Env:PSModulePath." -f $moduleSpec)
            }
            else {
                Write-Verbose -Message ("Module '{0}' is available with version v{1}." -f $moduleSpec.Name, $availableModule.Version)
                if ($PassThru.IsPresent) {
                    $availableModule
                }
            }
        }
    }
}