Public/Get-CTXAPI_MonitorData.ps1
<#PSScriptInfo .VERSION 1.0.0 .GUID ce76995e-894d-40ee-ac4a-f700cd9abd01 .AUTHOR Pierre Smit .COMPANYNAME iOCO Tech .COPYRIGHT .TAGS Citrix .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES Created [20/04/2021_12:17] Initital Script Creating .PRIVATEDATA #> <# .DESCRIPTION Get monitoring data #> Param() Function Get-CTXAPI_MonitorData { PARAM( [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNullOrEmpty()] [string]$CustomerId, [Parameter(Mandatory = $true, Position = 1)] [ValidateNotNullOrEmpty()] [string]$SiteId, [Parameter(Mandatory = $true, Position = 2)] [ValidateNotNullOrEmpty()] [string]$ApiToken, [Parameter(Mandatory = $true, Position = 3)] [ValidateNotNullOrEmpty()] [ValidateSet('us', 'eu', 'ap-s')] [string]$region, [ValidateNotNullOrEmpty()] [Parameter(Mandatory = $false, Position = 4)] [int]$hours) $headers = [System.Collections.Hashtable]@{ Authorization = "CwsAuth Bearer=$($ApiToken)" 'Citrix-CustomerId' = $customerId Accept = 'application/json' } function Export-Odata { [CmdletBinding()] param( [string]$URI, [System.Collections.Hashtable]$headers) $data = @() $NextLink = $URI While ($Null -ne $NextLink) { $tmp = Invoke-WebRequest -Uri $NextLink -Headers $headers | ConvertFrom-Json $tmp.Value | ForEach-Object { $data += $_ } $NextLink = $tmp.'@odata.NextLink' } return $data } $now = Get-Date -Format yyyy-MM-ddTHH:mm:ss.ffffZ $past = ((Get-Date).AddHours(-$hours)).ToString('yyyy-MM-ddTHH:mm:ss.ffffZ') $tmpuri = [PSCustomObject]@{ ApplicationActivitySummariesURI = 'https://api-' + $region + '.cloud.com/monitorodata\ApplicationActivitySummaries?$filter=(Granularity eq 60 and ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' #ApplicationErrorsURI = 'https://api-' + $region + '.cloud.com/monitorodata\ApplicationErrors?$filter=(ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' #ApplicationFaultsURI = 'https://api-' + $region + '.cloud.com/monitorodata\ApplicationFaults?$filter=(ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' ApplicationsURI = 'https://api-' + $region + '.cloud.com/monitorodata\Applications' CatalogsURI = 'https://api-' + $region + '.cloud.com/monitorodata\Catalogs' ConnectionFailureLogsURI = 'https://api-' + $region + '.cloud.com/monitorodata\ConnectionFailureLogs?$filter=(ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' ConnectionsURI = 'https://api-' + $region + '.cloud.com/monitorodata\Connections?$apply=filter(ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' DesktopGroupsURI = 'https://api-' + $region + '.cloud.com/monitorodata\DesktopGroups' DesktopOSDesktopSummariesURI = 'https://api-' + $region + '.cloud.com/monitorodata\DesktopOSDesktopSummaries?$filter=(Granularity eq 60 and ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' HypervisorsURI = 'https://api-' + $region + '.cloud.com/monitorodata\Hypervisors' MachineMetricURI = 'https://api-' + $region + '.cloud.com/monitorodata\MachineMetric?$filter=(CollectedDate ge ' + $past + ' and CollectedDate le ' + $now + ' )' MachineFailureLogsURI = 'https://api-' + $region + '.cloud.com/monitorodata\MachineFailureLogs?$filter=(ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' MachinesURI = 'https://api-' + $region + '.cloud.com/monitorodata\Machines' ResourceUtilizationURI = 'https://api-' + $region + '.cloud.com/monitorodata\ResourceUtilization?$filter=(ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' ServerOSDesktopSummariesURI = 'https://api-' + $region + '.cloud.com/monitorodata\ServerOSDesktopSummaries?$filter=(Granularity eq 60 and ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' SessionActivitySummariesURI = 'https://api-' + $region + '.cloud.com/monitorodata\SessionActivitySummaries?$filter=(Granularity eq 60 and ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' SessionMetricsURI = 'https://api-' + $region + '.cloud.com/monitorodata\SessionMetrics?$apply=filter(CollectedDate ge ' + $past + ' and CollectedDate le ' + $now + ' )' SessionURI = 'https://api-' + $region + '.cloud.com/monitorodata\Sessions?$apply=filter(ModifiedDate ge ' + $past + ' and ModifiedDate le ' + $now + ' )' UsersURI = 'https://api-' + $region + '.cloud.com/monitorodata\Users' } $mon = @() $mon = [PSCustomObject]@{ ApplicationActivitySummaries = @(Export-Odata -URI $tmpuri.ApplicationActivitySummariesURI -headers $headers) Applications = @(Export-Odata -URI $tmpuri.ApplicationsURI -headers $headers) Catalogs = @(Export-Odata -URI $tmpuri.CatalogsURI -headers $headers) ConnectionFailureLogs = @(Export-Odata -URI $tmpuri.ConnectionFailureLogsURI -headers $headers) Connections = @(Export-Odata -URI $tmpuri.ConnectionsURI -headers $headers) DesktopGroups = @(Export-Odata -URI $tmpuri.DesktopGroupsURI -headers $headers) DesktopOSDesktopSummaries = @(Export-Odata -URI $tmpuri.DesktopOSDesktopSummariesURI -headers $headers) Hypervisors = @(Export-Odata -URI $tmpuri.HypervisorsURI -headers $headers) MachineMetric = @(Export-Odata -URI $tmpuri.MachineMetricURI -headers $headers) MachineFailureLogs = @(Export-Odata -URI $tmpuri.MachineFailureLogsURI -headers $headers) Machines = @(Export-Odata -URI $tmpuri.MachinesURI -headers $headers) ResourceUtilization = @(Export-Odata -URI $tmpuri.ResourceUtilizationURI -headers $headers) ServerOSDesktopSummaries = @(Export-Odata -URI $tmpuri.ServerOSDesktopSummariesURI -headers $headers) SessionActivitySummaries = @(Export-Odata -URI $tmpuri.SessionActivitySummariesURI -headers $headers) SessionMetrics = @(Export-Odata -URI $tmpuri.SessionMetricsURI -headers $headers) Session = @(Export-Odata -URI $tmpuri.SessionURI -headers $headers) Users = @(Export-Odata -URI $tmpuri.UsersURI -headers $headers) } $mon } #end Function |