functions/Get-ActionsByType.ps1

<#
.SYNOPSIS
Get action from the object, filtered by the type of the action
 
.DESCRIPTION
Get actions and all nested actions, filtered by type
 
.PARAMETER InputObject
The object that you want to work against
 
Will by analyzed to see if it has nested actions, and will be recursively traversed to fetch all actions
 
.PARAMETER Type
The action type that will be outputted
 
.EXAMPLE
PS C:\> Get-ActionsByType -InputObject $obj -Type "Http"
 
Will traverse the $obj and filter actions to only output the ones of the type Http
 
.NOTES
 
Author: Mötz Jensen (@Splaxi)
 
#>

function Get-ActionsByType {
    param (
        [PsCustomObject] $InputObject,

        [string] $Type
    )
    
    if ($InputObject.Type -eq $Type -or $InputObject.Value.Type -eq $Type) {
        $InputObject
    }

    if ($InputObject.Value.actions) {
        foreach ($item in $InputObject.Value.actions.PsObject.Properties) {
            Get-ActionsByType -InputObject $item -Type $Type
        }
    }
    elseif ($InputObject.actions) {
        foreach ($item in $InputObject.actions.PsObject.Properties) {
            Get-ActionsByType -InputObject $item -Type $Type
        }
    }
}