functions/Get-ZGItem.ps1

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

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

    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"  = "item.get"
            "params"  = $parameters 
            "auth"    = $script:RequestAuth
        } 
        $response.result
    }
}