functions/Get-ZGEvent.ps1

function Get-ZGEvent {
    [CmdletBinding(DefaultParameterSetName = 'ByHostIds')]
    param (
        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $True, ParameterSetName = 'ByEventIds')]
        [long[]] $EventId,

        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $True, ParameterSetName = 'ByGroupIds')]
        [long[]] $GroupId,

        [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $True, ParameterSetName = 'ByHostIds')]
        [long[]] $HostId
    )

    Begin {
        $parameters = @{
            output = "extend"
        }

        switch ($PSCmdlet.ParameterSetName) {
            'ByEventIds' { $parameters.eventids = $EventId }
            'ByGroupIds' { $parameters.groupids = $GroupId }
            'ByHostIds' { $parameters.hostids = $HostId }
        }
    }

    Process {
        $response = Invoke-ZGRequest -Method "POST" -Body @{
            "method"  = "problem.get"
            "params"  = $parameters
            "auth"    = $script:RequestAuth
        }
        return $response.result
    }

    End {}
}