Public/MIA/Get-MIAReport.ps1

function Get-MIAReport
{
    [CmdletBinding(DefaultParameterSetName='TaskRun')]
    param (
        # Default to a TaskRun report if no parameters are specified. Even though
        # the switch if false, it is only used to select the correct
        # parameter set.
        [Parameter(Mandatory=$false,
                    ParameterSetName='TaskRun')]
        [switch]$TaskRun=$false,

        [Parameter(Mandatory,
                    ParameterSetName='FileActivity')]
        [switch]$FileActivity,

        [Parameter(Mandatory,
                    ParameterSetName='Audit')]
        [switch]$Audit,

        [Parameter(Mandatory=$false)]
        [string]$Predicate = '',

        [Parameter(Mandatory=$false)]
        [string]$OrderBy = '',

        [Parameter(Mandatory=$false)]
        [int32]$MaxCount = 100

    )

    switch ($PSCmdlet.ParameterSetName)
    {
        'TaskRun' {
            if ('' -eq $Predicate) {
                $Predicate = 'Status=in=("Success","Failure")'
            }

            if ('' -eq $OrderBy) {
                $OrderBy = '!StartTime'
            }

            $query = @{
                predicate = "$Predicate";
                orderBy = "$OrderBy";
                maxCount = "$MaxCount"
            }

            $response = Invoke-MIARequest -Resource 'reports/taskruns' -Method 'Post' -Body $query
            Write-MIAOutput -Response $response -Typename 'MIREST.MIAReportTaskRun'
        }

        'FileActivity' {
            if ('' -eq $Predicate) {
                $Predicate = 'StatusCode=out=("5000","5010")'
            }

            if ('' -eq $OrderBy) {
                $OrderBy = '!LogStamp'
            }

            $query = @{
                predicate = "$Predicate";
                orderBy = "$OrderBy";
                maxCount = "$MaxCount"
            }

            $response = Invoke-MIARequest -Resource 'reports/fileactivity' -Method 'Post' -Body $query
            Write-MIAOutput -Response $response -Typename 'MIREST.MIAReportFileActivity'
        }

        'Audit' {
            if ('' -eq $Predicate) {
                $Predicate = 'Status=="Failure"'
            }

            if ('' -eq $OrderBy) {
                $OrderBy = '!LogTime'
            }

            $query = @{
                predicate = "$Predicate";
                orderBy = "$OrderBy";
                maxCount = "$MaxCount"
            }

            $response = Invoke-MIARequest -Resource 'reports/audit' -Method 'Post' -Body $query
            Write-MIAOutput -Response $response -Typename 'MIREST.MIAReportAudit'
        }
    }

}