Functions/Get-OSIntegrationStudioInfo.ps1

function Get-OSIntegrationStudioInfo
{
    <#
    .SYNOPSIS
    Returns the OutSystems Integration Studio install location and version.
 
    .DESCRIPTION
    This will return the OutSystems Integration Studio install location and version.
 
    .PARAMETER MajorVersion
    Major version
 
    .EXAMPLE
    Get-OSIntegrationStudioInfo -MajorVersion "11"
 
    #>


    [CmdletBinding()]
    [OutputType('Outsystems.SetupTools.IntegrationStudioInfo')]
    param (
        [Parameter(Mandatory = $true, HelpMessage = "11")]
        [string]$MajorVersion
    )

    begin
    {
        LogMessage -Function $($MyInvocation.Mycommand) -Phase 0 -Stream 0 -Message "Starting"
        SendFunctionStartEvent -InvocationInfo $MyInvocation

        # Initialize the results object
        $integrationStudioInfo = [pscustomobject]@{
            PSTypeName   = 'Outsystems.SetupTools.IntegrationStudioInfo'
            InstallDir   = ''
            Version      = ''
        }
    }

    process
    {
        $integrationStudioInfo.InstallDir = GetIntegrationStudioInstallDir -MajorVersion $MajorVersion
        $integrationStudioInfo.Version = GetIntegrationStudioVersion -MajorVersion $MajorVersion

        if ($(-not $integrationStudioInfo.Version) -or $(-not $integrationStudioInfo.InstallDir))
        {
            LogMessage -Function $($MyInvocation.Mycommand) -Phase 1 -Stream 3 -Message "OutSystems Integration Studio $MajorVersion is not installed"
            WriteNonTerminalError -Message "OutSystems Integration Studio $MajorVersion is not installed"

            return $null
        }

        LogMessage -Function $($MyInvocation.Mycommand) -Phase 1 -Stream 0 -Message "Integration Studio InstallDir is: $($integrationStudioInfo.InstallDir)"
        LogMessage -Function $($MyInvocation.Mycommand) -Phase 1 -Stream 0 -Message "Integration Studio is: $($integrationStudioInfo.Version)"

        return $integrationStudioInfo
    }

    end
    {
        SendFunctionEndEvent -InvocationInfo $MyInvocation
        LogMessage -Function $($MyInvocation.Mycommand) -Phase 2 -Stream 0 -Message "Ending"
    }
}