com.start-automating.windowsscriptdeck.sdPlugin/URLScript.@.ps1

if (-not $event.MessageData.payload.settings) { return }

$invokeError = $null

# WillAppear and WillDisappear are both settings that will run a script.
foreach ($settingName in 'WillAppear', 'WillDisappear') {
    if ($event.SourceIdentifier -match $settingName -and
    $event.MessageData.payload.settings.$settingName) {
        $settingScript = $event.MessageData.payload.settings.$settingName
        Invoke-Expression $settingScript -ErrorAction Continue -ErrorVariable $invokeError
        if ($invokeError) {
            $invokeError | Out-string | Add-Content -Path $global:STREAMDECK_PLUGINLOGPATH
            Send-StreamDeck -ShowAlert -Context $event.MessageData.Context
        } else {
            Send-StreamDeck -ShowOK -Context $event.MessageData.Context
        }
    }
}

# Keydown will run differently:
if ($event.SourceIdentifier -match 'KeyDown') {
    if ($event.MessageData.payload.settings.script) {
        Invoke-Expression -Command $event.MessageData.payload.settings.script 2>&1 |
            Foreach-Object {
                if ($_ -is [uri] -or $_ -like 'http*') {
                    Start-Process -FilePath "$_"
                }
            }
    }   
}