Public/Get-TIConnectorStatus.ps1

<#
.SYNOPSIS
    Retrieves the current status of the TI-Connector.
 
.DESCRIPTION
    Queries the connector status endpoint and converts Unix millisecond
    timestamps into local DateTime objects.
 
.PARAMETER ComputerName
    FQDN or IP address of the target connector.
 
.PARAMETER Credential
    PSCredential object containing connector access credentials.
 
.EXAMPLE
    Get-TIConnectorStatus -ComputerName "192.168.1.100" -Credential $cred
#>

function Get-TIConnectorStatus {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [string] $ComputerName,
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
        [PSCredential] $Credential
    )

    process {
        $status = Invoke-TIConnectorRequest -ComputerName $ComputerName -Credential $Credential -Request GetConnectorStatus

        $operatingStates = if ($status.operatingStates) {
            $status.operatingStates | Where-Object { $_.value -eq $true } | ForEach-Object {
                [PSCustomObject]@{
                    MainCondition = $_.mainCondition
                    Severity      = $_.severity
                    ErrorType     = $_.errorType
                    Value         = $_.value
                    ValidFrom     = if ($_.validFrom) { [DateTimeOffset]::FromUnixTimeMilliseconds($_.validFrom).ToLocalTime().DateTime } else { $null }
                    Parameters    = $_.parameters
                }
            }
        }
        else { @() }

        return [PSCustomObject]@{
            ComputerName              = $ComputerName
            ConnectorStarted          = if ($status.connectorStarted) { [DateTimeOffset]::FromUnixTimeMilliseconds($status.connectorStarted).ToLocalTime().DateTime } else { $null }
            VpnTiConnected            = $status.vpnTiConnected
            VpnTiConnectionStateDate  = if ($status.vpnTiConnectionStateDate) { [DateTimeOffset]::FromUnixTimeMilliseconds($status.vpnTiConnectionStateDate).ToLocalTime().DateTime } else { $null }
            VpnSisConnected           = $status.vpnSisConnected
            VpnSisConnectionStateDate = if ($status.vpnSisConnectionStateDate) { [DateTimeOffset]::FromUnixTimeMilliseconds($status.vpnSisConnectionStateDate).ToLocalTime().DateTime } else { $null }
            RestartRequired           = $status.restartRequired
            OperatingStates           = $operatingStates
        }
    }
}