Created
April 28, 2021 11:39
-
-
Save Panzerbjrn/66c28059bfe72d493024d46b8df60394 to your computer and use it in GitHub Desktop.
Basic script to get vROps data
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$Accept = 'application/json' | |
$AuthHeaders = @{ | |
accept = $Accept | |
} | |
$Body = @{ | |
refresh_token = '<Insert Your Own API Key Here>' | |
} | |
$AuthResponseSplat = @{ | |
Method = "Post" | |
Uri = "https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize" | |
Body = $Body | |
ContentType = $ContentType | |
} | |
$AuthResponse = Invoke-RestMethod @AuthResponseSplat -Headers $AuthHeaders -ErrorAction STOP -Verbose | |
#### | |
$BaseURI = "https://www.mgmt.cloud.vmware.com/vrops-cloud/suite-api/api/" | |
$ContentType = 'application/json' | |
$Headers = @{ | |
accept = $Accept | |
'content-type' = $ContentType | |
Authorization = "CSPToken $($AuthResponse.access_token)" | |
} | |
Write-Output "BaseURI is $BaseUri" | |
$InvokeRestMethodSplat = @{ | |
Method = "GET" | |
Headers = $Headers | |
ContentType = $ContentType | |
} | |
$URI = $BaseURI + "resources" | |
$Result = Invoke-RestMethod @InvokeRestMethodSplat -Uri $URI | |
$Resources = $Result.resourceList | |
$FinalPage = ($Result.links | where {$_.Name -eq "last"}).href.split('=').split('&')[1] | |
$Page = 1 | |
DO{ | |
Write-Output "Page $($Page)" | |
$Uri = $BaseURI + "resources?page=$Page&pageSize=1000" | |
#$Result = Invoke-RestMethod @InvokeRestMethodSplat -Uri $Uri | |
$Result = Invoke-RestMethod @InvokeRestMethodSplat -Uri $Uri | |
$Resources += $Result.resourceList | |
Write-Output "There are $($Resources.count) resources" | |
$Page++ | |
Sleep -s 1 | |
} | |
UNTIL ((($Result.links | where {$_.Name -eq "last"}).href) -eq (($Result.links | where {$_.Name -eq "Current"}).href)) | |
$VMs = $Resources | Where-Object {$_.ResourceKey.resourceKindKey -eq "VirtualMachine"} | |
$VHosts = $Resources | Where-Object {$_.ResourceKey.resourceKindKey -eq "HostSystem"} | |
$Clusters = $Resources | Where-Object {$_.ResourceKey.resourceKindKey -eq "ClusterComputeResource"} | |
$DataStores = $Resources | Where-Object {$_.ResourceKey.resourceKindKey -eq "datastore"} | |
#################################### | |
#Sets Dates | |
$Date = Get-Date | |
$Start = $Date.AddDays(-1) | |
$Finish = $Date | |
$RollUpTypeAVG = 'AVG' | |
$RollUpTypeMAX = 'MAX' | |
$IntervalType = 'DAYS' | |
$IntervalCount = "2" | |
[int64]$StartDateEpoc = Get-Date -Date $Start.ToUniversalTime() -UFormat %s | |
$StartDateEpoc = $StartDateEpoc*1000 | |
[int64]$EndDateEpoc = Get-Date -Date $Finish.ToUniversalTime() -UFormat %s | |
$EndDateEpoc = $EndDateEpoc*1000 | |
ForEach ($VM in $VMs[(0..(($VMs).count -1) | Get-Random)]){ | |
$ResourceID = $VM.identifier | |
$StatsURL1 = $BaseURI + 'resources/stats?resourceId='+ $ResourceID + '&rollUpType='+ $RollUpTypeAVG + '&intervalType=' + $IntervalType + '&intervalcount=' + $IntervalCount + '&begin=' + $StartDateEpoc + '&end=' + $EndDateEpoc | |
$StatsURL2 = $BaseURI + 'resources/stats?resourceId='+ $ResourceID + '&rollUpType='+ $RollUpTypeMAX + '&intervalType=' + $IntervalType + '&intervalcount=' + $IntervalCount + '&begin=' + $StartDateEpoc + '&end=' + $EndDateEpoc | |
$PropertiesUri = $BaseURI + "resources/$ResourceID/properties" | |
$RelationshipsURI = $BaseURI + "resources/$ResourceID/relationships" | |
$VMRelationships = (Invoke-RestMethod @InvokeRestMethodSplat -Uri $RelationshipsURI).resourceList | |
$VMStats1 = Invoke-RestMethod @InvokeRestMethodSplat -Uri $StatsURL1 | |
$VMStats2 = Invoke-RestMethod @InvokeRestMethodSplat -Uri $StatsURL2 | |
$VMProperties = (Invoke-RestMethod -Uri $PropertiesUri @InvokeRestMethodSplat).property | |
} | |
ForEach ($Cluster in $Clusters[(0..(($Clusters).count -1) | Get-Random)]){ | |
$ResourceID = $Cluster.identifier | |
$StatsURL1 = $BaseURI + 'resources/stats?resourceId='+ $ResourceID + '&rollUpType='+ $RollUpTypeAVG + '&intervalType=' + $IntervalType + '&intervalcount=' + $IntervalCount + '&begin=' + $StartDateEpoc + '&end=' + $EndDateEpoc | |
$StatsURL2 = $BaseURI + 'resources/stats?resourceId='+ $ResourceID + '&rollUpType='+ $RollUpTypeMAX + '&intervalType=' + $IntervalType + '&intervalcount=' + $IntervalCount + '&begin=' + $StartDateEpoc + '&end=' + $EndDateEpoc | |
$PropertiesUri = $BaseURI + "resources/$ResourceID/properties" | |
$RelationshipsURI = $BaseURI + "resources/$ResourceID/relationships" | |
$CluRelationships = (Invoke-RestMethod @InvokeRestMethodSplat -Uri $RelationshipsURI).resourceList | |
$CluStats1 = Invoke-RestMethod @InvokeRestMethodSplat -Uri $StatsURL1 | |
$CluStats2 = Invoke-RestMethod @InvokeRestMethodSplat -Uri $StatsURL2 | |
$CluProperties = (Invoke-RestMethod -Uri $PropertiesUri @InvokeRestMethodSplat).property | |
} | |
ForEach ($VHost in $Vhosts[(0..(($Vhosts).count -1) | Get-Random)]){ | |
$ResourceID = $VHost.identifier | |
$StatsURL1 = $BaseURI + 'resources/stats?resourceId='+ $ResourceID + '&rollUpType='+ $RollUpTypeAVG + '&intervalType=' + $IntervalType + '&intervalcount=' + $IntervalCount + '&begin=' + $StartDateEpoc + '&end=' + $EndDateEpoc | |
$StatsURL2 = $BaseURI + 'resources/stats?resourceId='+ $ResourceID + '&rollUpType='+ $RollUpTypeMAX + '&intervalType=' + $IntervalType + '&intervalcount=' + $IntervalCount + '&begin=' + $StartDateEpoc + '&end=' + $EndDateEpoc | |
$PropertiesUri = $BaseURI + "resources/$ResourceID/properties" | |
$RelationshipsURI = $BaseURI + "resources/$ResourceID/relationships" | |
$VHRelationships = (Invoke-RestMethod @InvokeRestMethodSplat -Uri $RelationshipsURI).resourceList | |
$VHStats1 = Invoke-RestMethod @InvokeRestMethodSplat -Uri $StatsURL1 | |
$VHStats2 = Invoke-RestMethod @InvokeRestMethodSplat -Uri $StatsURL2 | |
$VHProperties = (Invoke-RestMethod -Uri $PropertiesUri @InvokeRestMethodSplat).property | |
} | |
ForEach ($Datastore in $Datastores[(0..(($Datastores).count -1) | Get-Random)]){ | |
$ResourceID = $Datastore.identifier | |
$StatsURL1 = $BaseURI + 'resources/stats?resourceId='+ $ResourceID + '&rollUpType='+ $RollUpTypeAVG + '&intervalType=' + $IntervalType + '&intervalcount=' + $IntervalCount + '&begin=' + $StartDateEpoc + '&end=' + $EndDateEpoc | |
$StatsURL2 = $BaseURI + 'resources/stats?resourceId='+ $ResourceID + '&rollUpType='+ $RollUpTypeMAX + '&intervalType=' + $IntervalType + '&intervalcount=' + $IntervalCount + '&begin=' + $StartDateEpoc + '&end=' + $EndDateEpoc | |
$PropertiesUri = $BaseURI + "resources/$ResourceID/properties" | |
$RelationshipsURI = $BaseURI + "resources/$ResourceID/relationships" | |
$DSRelationships = (Invoke-RestMethod @InvokeRestMethodSplat -Uri $RelationshipsURI).resourceList | |
$DSStats1 = Invoke-RestMethod @InvokeRestMethodSplat -Uri $StatsURL1 | |
$DSStats2 = Invoke-RestMethod @InvokeRestMethodSplat -Uri $StatsURL2 | |
$DSProperties = (Invoke-RestMethod -Uri $PropertiesUri @InvokeRestMethodSplat).property | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment