Functions/Get-RSCEvents/Get-RSCEventsRunning.ps1

################################################
# Function - Get-RSCEventsRunning - Getting all RSC Running events
################################################
Function Get-RSCEventsRunning {

<#
.SYNOPSIS
A Rubrik Security Cloud (RSC) Reporting Module Function for currently running events.
 
.DESCRIPTION
Makes the required GraphQL API calls to RSC via Invoke-RestMethod to get the data as described, then creates a usable array of the returned information, removing the need for the PowerShell user to understand GraphQL in order to interact with RSC.
 
.LINK
GraphQL schema reference: https://rubrikinc.github.io/rubrik-api-documentation/schema/reference
The ActivitySeriesConnection type: https://rubrikinc.github.io/rubrik-api-documentation/schema/reference/activityseriesconnection.doc.html
 
.PARAMETER ObjectType
Set the required object type of the events, has to be be a valid object type from the schema link, you can also try not specifying this, then use ObjectType on the array to get a valid list of ObjectType.
.PARAMETER ObjectID
Set the ObjectID to only return running events for the object specified (pulls all running events then filters, as there's no API filter for object ID as of 08/15/23)
 
.OUTPUTS
Returns an array of all the available information on the GraphQL endpoint in a uniform and usable format.
 
.EXAMPLE
Get-RSCEventsRunning
This example returns all running events within a 24 hour period as no paramters were set.
 
.EXAMPLE
Get-RSCEventsRunning -DaysToCapture 30
This example returns all running events started within a 30 day period.
 
 
.NOTES
Author: Joshua Stenhouse
Date: 05/11/2023
#>


################################################
# Paramater Config
################################################
    Param
    (
        $ObjectType,$ObjectID,$DaysToCapture
    )

################################################
# Importing Module & Running Required Functions
################################################
# Importing the module is it needs other modules
Import-Module RSCReporting
# Checking connectivity, exiting function with error if not connected
Test-RSCConnection

# Setting default days to capture if not set
IF($DaysToCapture -eq $null){$DaysToCapture = 1}

# Using existing Get-RSCEvents function
$RSCEventsRunning = Get-RSCEvents -DaysToCapture $DaysToCapture -LastActivityStatus "RUNNING"

# Removing task failures, appear as running status even though they aren't!
$RSCEventsRunning = $RSCEventsRunning | Where-Object {$_.Status -eq "RUNNING"}

# Filtering for object type if set
IF($ObjectType -ne $null){$RSCEventsRunning = $RSCEventsRunning | Where-Object {$_.ObjectType -eq $ObjectType}}

# Filtering for object ID if set
IF($ObjectID -ne $null){$RSCEventsRunning = $RSCEventsRunning | Where-Object {$_.ObjectID -eq $ObjectID}}

# Returning array
Return $RSCEventsRunning
# End of function
}