Private/Get-TerraformVersionInstalled.ps1

function Get-TerraformVersionInstalled {
    <#
        .SYNOPSIS
        !! LEGACY !!
        Get version of installed Terraform executable
        .DESCRIPTION
        The function gets the version of the locally installed Terraform executable and returns
        the version as string.
        .OUTPUTS
        System.IO.String
        .NOTES
        The function is marked as legacy!
        .EXAMPLE
        Get-TerraformVersionInstalled
        .EXAMPLE
        To process the result for version comparison use [Version] prefix, e.g.:
        $AsVersion = [Version]$(Get-TerraformVersionInstalled)
    #>

    [CmdletBinding(HelpUri='https://github.com/uplink-systems/powershell-modules/UplinkSystems.Terraform')]
    [Alias('Invoke-TfVersionInstalled')]
    Param()
    begin {
        [Array]$Preferences = $ErrorActionPreference,$WarningPreference,$InformationPreference
        $ErrorActionPreference = 'SilentlyContinue'
    }
    process {
        try {
            $VersionInstalled = (Invoke-Expression "terraform --version" -ErrorAction Stop | Where-Object { $_ -match 'Terraform v\d{1,}\.\d{1,}\.\d{1,}' } | Select-String -Pattern "([\d]+.[\d]+.[\d]+-[\w]+[\d]+|[\d]+.[\d]+.[\d]+)").Matches.Value
            return $VersionInstalled
        } catch {
            $VersionInstalled = $null
            return $VersionInstalled
        }
    }
    end {
        $ErrorActionPreference = $Preferences[0]
    }
}