functions/private/Get-omsAgentInternal.ps1

function Get-omsAgentInternal
{
    [CmdletBinding()]
    [OutputType('omsAgent')]
    param (
        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$computerName,
        [Parameter(Mandatory=$true)]
        [object]$session
    )

    try
    {
        Invoke-Command -Session $session -ScriptBlock {
            $oms = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.displayName -eq 'Microsoft Monitoring Agent' }

            if($oms)
            {
                $omsInfo = @{
                        PSTypeName      = 'omsAgent'
                        computerName    = $USING:computerName
                        DisplayName     = $oms.DisplayName
                        Version         = $oms.Version
                        DisplayVersion  = $oms.DisplayVersion
                        UninstallString = $oms.UninstallString
                }
                try
                {
                    New-Object -ComObject 'AgentConfigManager.MgmtSvcCfg' -ErrorAction Stop | Out-Null

                    $omsInfo.comObjectAvailable = $true
                }
                catch
                {
                    $omsInfo.comObjectAvailable = $false
                }

                New-Object -TypeName PSObject -Property $omsInfo
            }
        } -ErrorAction Stop -HideComputerName
    }
    catch
    {
        Throw $_
    }
}