lib/icinga/plugin/Exit-IcingaExecutePlugin.psm1

function Exit-IcingaExecutePlugin()
{
    param (
        [string]$Command = ''
    );

    Invoke-IcingaInternalServiceCall -Command $Command -Arguments $args;

    try {
        # Load the entire framework now, as we require to execute plugins locally
        if ($null -eq $global:IcingaDaemonData) {
            Use-Icinga;
        }

        Exit-IcingaPluginNotInstalled -Command $Command;

        exit (& $Command @args);
    } catch {
        $ExMsg      = $_.Exception.Message;
        $StackTrace = $_.ScriptStackTrace;

        Write-IcingaConsolePlain '[UNKNOWN] Icinga Exception: {0}{1}{1}CheckCommand: {2}{1}Arguments: {3}{1}{1}StackTrace:{1}{4}' -Objects $ExMsg, (New-IcingaNewLine), $Command, $args, $StackTrace;
        exit 3;
    }
}