targets/Slack.ps1

@{
    Name = 'Slack'
    Configuration = @{
        ServerUri   = @{Required = $true;   Type = [string]}
        BotName     = @{Required = $false;  Type = [string]}
        Channel     = @{Required = $false;  Type = [string]}
        Level       = @{Required = $false;  Type = [string]}
    }
    Logger = {
        param(
            $Log, 
            $Format, 
            $Configuration
        )
                
        $Text = @{
            Text = Replace-Tokens -String $Format -Source $Log
        }
                
        if ($Configuration.BotName) { $Text['username'] = $Configuration.BotName }
        
        if ($Configuration.Channel) { $Text['channel'] = $Configuration.Channel }
        
        if ($Log.levelno -ge 30 -and $Log.levelno -lt 40) {
            $Text['icon_emoji'] = ':warning:'
        } elseif ($Log.levelno -ge 40) {
            $Text['icon_emoji'] = ':fire:'
        } else {
            $Text['icon_emoji'] = ':exclamation:'
        }
                 
        Invoke-RestMethod -Method Post -Uri $Configuration.ServerUri -Body ($Text | ConvertTo-Json) | Out-Null
    }
}