Public/Get-TEApiReport.ps1
|
function Get-TEApiReport { <# .SYNOPSIS Function for getting reports .DESCRIPTION #### STATUS: Working #### Grabs either a list of all reports or report data .EXAMPLE Get-TEApiReport This will use the default behavior and return all reports .EXAMPLE .PARAMETER apiVersion API version defaults to version 6 .PARAMETER aid Account Group ID .PARAMETER reportId Report ID .PARAMETER componentId Component ID .PARAMETER snapshotId Snapshot ID .PARAMETER reportSnapshots returns a list of alert Rules configured on the account .PARAMETER window Specifies a window of time for active alerts (optional) [0-9]+[smhdw] .PARAMETER timeRange Specifies an explicit start and end time (optional) YYYY-mm-ddTHH:MM:SS&to=YYYY-mm-ddTHH:MM:SS #> [CmdletBinding(DefaultParameterSetName='reportlist')] param( [int]$apiVersion = 6, [string]$aid, [Parameter(ParameterSetName="reportDetails", Mandatory=$True, ValueFromPipeline=$true, HelpMessage="Report ID")] [string]$reportId, [Parameter(ParameterSetName="snapshotDetails", Mandatory=$True, ValueFromPipeline=$true, HelpMessage="Report ID")] [string]$snapshotId, [Parameter(ParameterSetName="reportDetails", Mandatory=$False, HelpMessage="Report Data")] [Parameter(ParameterSetName="snapshotDetails", Mandatory=$False, HelpMessage="Report Data")] [string]$componentId, [Parameter(ParameterSetName="reportDetails", HelpMessage="window")] [validateScript({ If ($_ -match "[0-9]+[smhdw]") { $True } else { Throw "$_ must start with digit and include s,m,h,d, or w " } })] [string]$window, [Parameter(ParameterSetName="snapshotList", HelpMessage="Get List of Snapshots")] [switch]$reportSnapshots, [Parameter(ParameterSetName="reportDetails", HelpMessage="Explicit time Range <from>")] [string]$timeRangeFrom, [Parameter(ParameterSetName="reportDetails", HelpMessage="Explicit time Range<to>")] [string]$timeRangeTo ) BEGIN {} PROCESS { if(($reportId -and $componentId)){ if (($timeRangeFrom -and (-not $timeRangeTo)) -or ($timeRangeTo -and (-not $timeRangeFrom))) { Write-Output "Time Range must include both a timeRangeFrom and timeRangeTo"; break } if($window){ $windowParam = 'window='+$window $reportDetailsObject = Send-TEApi $apiVersion -urlComponents:@("reports", "$reportId", "$componentId") -aid $aid ` -optionalParams:@("$windowParam") while($reportDetailsObject.pages.next){ $reportDetailsObject = Send-TEApi -pageURL $reportDetailsObject.pages.next Write-Output $reportDetailsObject.reportDataComponentData } }else{ $timeRangeFromParam = 'from='+$timeRangeFrom $timeRangeToParam = 'to='+$timeRangeTo $reportDetailsObject = Send-TEApi $apiVersion -urlComponents:@("reports", "$reportId", "$componentId") -aid $aid ` -optionalParams:@("$timeRangeFromParam", "$timeRangeToParam") while($reportDetailsObject.pages.next){ $reportDetailsObject = Send-TEApi -pageURL $reportDetailsObject.pages.next Write-Output $reportDetailsObject.reportDataComponentData } } } elseif($snapshotId -and $componentId){ $reportDetailsObject = Send-TEApi $apiVersion -urlComponents:@("report-snapshots", "$snapshotId", "$componentId") -aid $aid ` while($reportDetailsObject.pages.next){ $reportDetailsObject = Send-TEApi -pageURL $reportDetailsObject.pages.next Write-Output $reportDetailsObject.reportDataComponentData.data } } elseif ($reportId){ $reportDetailsObject = Send-TEApi $apiVersion -urlComponents:@("reports", "$reportId") -aid $aid Write-Output $reportDetailsObject.reports } elseif ($snapshotId){ $reportDetailsObject = Send-TEApi $apiVersion -urlComponents:@("report-snapshot", "$snapshotId") -aid $aid Write-Output $reportDetailsObject.reportSnaphots } else { $reportDetailsObject = Send-TEApi $apiVersion -urlComponents:@("reports") -aid $aid Write-Output $reportDetailsObject } } END {} } |