Private/Test-GetModule.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<#
.SYNOPSIS
    Checks, whether specified module is loaded.
 
.PARAMETER Name
    Exact name of the mmodule
 
.PARAMETER RequiredVersion
    Minimum required module version
 
.EXAMPLE
    Test-GetModule -Name myModule -RequiredVersion 1.0.1
 
#>

function Test-GetModule {
    [CmdLetBinding()]
    [OutputType([bool])]
    param (
        [Parameter(Mandatory = $true, HelpMessage = "Exact name of the mmodule")]
        [string] $Name,

        [Parameter(Mandatory = $false, HelpMessage = "Minimum required module version")]
        [Version] $RequiredVersion
    )
    $ErrorActionPreference = 'Stop'

    $module = Get-Module -Name $Name -ErrorAction SilentlyContinue
    if ([string]::IsNullOrEmpty($module) -or [string]::IsNullOrEmpty($module.Version)) {
        return $false
    } 

    if ([string]::IsNullOrEmpty($RequiredVersion)) {
        return $true
    }

    if ([Version] $module.Version -ge $RequiredVersion) {
        return $true
    }
    else {
        return $false
    }

}