Public/Invoke-LMPushMetricKeepAlive.ps1

Function Invoke-LMPushMetricKeepAlive {
    Param (
        [Parameter(Mandatory,ValueFromPipeline)]
        $DeviceObject,

        $DatasourceGroupName = "Host Status",

        $DatasourceName = "PushMetricKeepAlive_PMv1",

        $DatasourceDisplayName = "PushMetric Keep Alive",

        $InstanceName = "PushMetric_Keep_Alive",

        $DataPointName = "KeepAlive"

    )

    Begin{
        #Check if we are logged in and have valid api creds
        If ($(Get-LMAccountStatus).Type -ne "Bearer") {
            Write-Error "Push Metrics API only officially only supports Bearer Token auth, please re-connect using a valid bearer token if you encounter errors with submission."
        }
        return
    }
    Process{
        $Datapoints = [System.Collections.Generic.List[object]]::New()
        $Datapoints.Add([PSCustomObject]@{
            Name = $DataPointName
            Description = "PushMetric datapoint to keep PMv1 devices active."
            Value = 1
        })

        $DatapointsArray = New-LMPushMetricDataPoint -Datapoints $Datapoints

        $InstanceArray = [System.Collections.Generic.List[object]]::New()
        $InstanceArray.Add($(New-LMPushMetricInstance -Datapoints $DatapointsArray -InstanceName $InstanceName -InstanceDisplayName $DatasourceName -InstanceDescription "PushMetric instance to keep PMv1 devices active."))

        #Submit PushMetric to portal
        $DeviceHostName = $DeviceObject.Name
        $DeviceDisplayName = $DeviceObject.DisplayName
        $DatasourceGroup =   $DatasourceGroupName
        $DatasourceDisplayName = $DatasourceDisplayName
        $DatasourceName = $DatasourceName
        $ResourceIds = @{"system.hostname"=$DeviceHostName;"system.displayname"=$DeviceDisplayName}

        Write-Host "Submitting PushMetric to ingest for $DeviceHostName ($DeviceDisplayName)."
        $Result = Send-LMPushMetric -Instances $InstanceArray -DatasourceGroup $DatasourceGroup -DatasourceDisplayName $DatasourceDisplayName -DatasourceName $DatasourceName -ResourceIds $ResourceIds -NewResourceHostName $DeviceHostName

        Write-Host "PushMetric submitted with status: $($Result.message) @($($Result.timestamp))"
    }
    End{}
}