Invoke-PSSentinelOneApi.ps1
Function Invoke-PSSentinelOneApi { <# .SYNOPSIS Invoke SentineOne API request. .PARAMETER Request Request object. .PARAMETER Silent witout Write-Progress .EXAMPLE $Request = New-PSSentinelOneApiRequest -Uri "https://euce1-103.sentinelone.net/web/api/v2.1/agents" -Method GET -ApiToken $ApiToken $Agents = Invoke-PSSentinelOneApi -Request $Request .NOTES Author: Michal Gajda #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [Hashtable]$Request, [Parameter()] [Switch]$Silent ) $Response = Invoke-RestMethod @Request $Data = @() $Data += $Response.data $Counter = $Data.Count $Total = $Response.pagination.totalItems #Paginacja While($Data.Count -lt $Total) { if($null -eq $Silent) { Write-Progress -Activity "Przetwarzanie danych" -status "$Counter / $Total" -percentcomplete $([Int](($Counter/$Total)*100)) } $Request = New-PSSentinelOneApiRequest -Uri $Request.Uri -Method GET -Headers $Request.Headers -Filter @{"cursor"=$Response.pagination.nextCursor} $Response = Invoke-RestMethod @Request $Data += $Response.data $Counter = $Data.Count } return $Data } |