PSvLIMessage.psm1

add-type @"
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
"@

[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy

<#
  .SYNOPSIS
    Push Messages to VMware vRealize Log Insight.
   
  .DESCRIPTION
      Push Messages to VMware vRealize Log Insight.
 
  .EXAMPLE
    Push-vLIMessage -vLIServer "loginsight.lan.local" -vLIAgentID "12862842-5A6D-679C-0E38-0E2BE888BB28" -Text "My Test"
     
  .EXAMPLE
    Push-vLIMessage -vLIServer "loginsight.lan.local" -vLIAgentID "12862842-5A6D-679C-0E38-0E2BE888BB28" -Text "My Test" -Hostname MyTEST -FieldName myTest -FieldContent myTest
     
  .PARAMETER vLIServer
    Specify the vLI FQDN
 
  .PARAMETER vLIAgentID
    Specify the vLI Agent ID
 
  .PARAMETER Text
    Specify the Event Text
 
  .PARAMETER Hostname
    Specify the Hostanme displayed in vLI
 
  .PARAMETER FieldName
    Specify the a Optional Field Name for vLI
     
  .PARAMETER FieldContent
    Specify the a Optional FieldContent for the Field in -FieldName for vLI
    If FielName is missing and FieldContent is given, it will be ignored
     
 #Requires PS -Version 2.0
  
 #>

function Push-vLIMessage {

    [cmdletbinding()]
    param (
    [parameter(Mandatory=$true)]
    [string]$Text,
    [parameter(Mandatory=$true)]
    [string]$vLIServer,
    [parameter(Mandatory=$true)]
    [string]$vLIAgentID,
    [parameter(Mandatory=$false)]
    [string]$Hostname = $env:computername,
    [parameter(Mandatory=$false)]
    [string]$FieldName,
    [parameter(Mandatory=$false)]
    [string]$FieldContent = ""
    )
    Process {
        $Field_vLI = [ordered]@{
                        name = "PS_vLIMessage"
                        content = "true"
                        }
        $Field_HostName = [ordered]@{
                        name = "hostname"
                        content = $Hostname
                        }
                    
        $Fields = @($Field_vLI, $Field_HostName)
        
        if ($FieldName) {
            $Field_Custom = [ordered]@{
                    name = $FieldName
                    content = $FieldContent
                    }
            $Fields += @($Field_Custom)
            }
            
        $Restcall = @{
                    messages =    ([Object[]]([ordered]@{
                            text = ($Text)
                            fields = ([Object[]]$Fields)
                            }))
                    } | convertto-json -Depth 4
    
        $Resturl = ("http://" + $vLIServer + ":9000/api/v1/messages/ingest/" + $vLIAgentID)
        try
        {
            $Response = Invoke-RestMethod $Resturl -Method Post -Body $Restcall -ContentType 'application/json' -ErrorAction stop
            Write-Information "REST Call to Log Insight server successful"
            Write-Verbose $Response
        }
        catch
        {
            Write-Error "REST Call failed to Log Insight server"
            Write-Verbose $error[0]
            Write-Verbose $Resturl
        }
    }
}