Start-Outlook.ps1

function Start-Outlook {

<#
.SYNOPSIS
OutlookConnector function: Starts MS Outlook GUI. Used in case of issues with Connect-Outlook function.
 
.DESCRIPTION
Starts MS Outlook GUI. Used in case of issues with Connect-Outlook function.
Issues usually occure due to slow or interactive Outlook start. If GUI starts successfully, Connect-Outlook should run without issues.
Outlook executable is found via Registry search.
 
.INPUTS
This function is not accepting any parameters.
 
.OUTPUTS
Function returns nothing.
 
.EXAMPLE
Start-Outlook
Opens MS Outlook GUI.
 
.LINK
about_OutlookConnector
 
.NOTES
NAME: Start-Outlook
AUTHOR: Igor Iric, iric@gmail.com
CREATEDATE: September 29, 2015
#>


# ---------------------- [Parameters definitions] ------------------------

[CmdletBinding()] 

Param ()

# ------------------------- [Function start] -----------------------------

if (Get-Process | Where-Object name -eq outlook) {
    Write-Verbose -Message 'Outlook already running. No action needed.'
    }
else {
    $key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\OUTLOOK.EXE\'

    if (!(Test-Path -Path $key)) {
        throw 'Path to Outlook executable not found.'

    } else {
        $exe = (Get-ItemProperty -Path $key).'(default)'
        if (Test-Path -Path $exe) {
            Write-Verbose -Message 'Starting Outlook application...'
            Invoke-Item -Path  $exe
        } else {
            throw 'Outlook executable not found.'
        }
    }
}

# ------------------------- [End of function] ----------------------------

}