functions/event-pipeline/Search-TssEventPipeline.ps1
|
function Search-TssEventPipeline { <# .SYNOPSIS Get a list of Event Pipeline Policies .DESCRIPTION Get a list of Event Pipeline Policies .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred Search-TssEventPipeline -TssSession $session Return a list of all active Event Pipeline Policies .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred Search-TssEventPipeline -TssSession $session -IncludeInactive Return a list of all active and inactive Event Pipeline Policies .EXAMPLE $session = New-TssSession -SecretServer https://alpha -Credential $ssCred Search-TssEventPipeline -TssSession $session -IncludeInactive -Detailed Return all active and inactive Event Pipelines with their triggers, filters and tasks .PARAMETER Detailed Return full Event Pipeline objects, with triggers, filters and tasks, instead of summaries .LINK https://thycotic-ps.github.io/thycotic.secretserver/commands/event-pipeline/Search-TssEventPipeline .LINK https://github.com/thycotic-ps/thycotic.secretserver/blob/main/src/functions/event-pipeline/Search-TssEventPipeline.ps1 .NOTES Requires TssSession object returned by New-TssSession #> [CmdletBinding(DefaultParameterSetName = 'summary')] [OutputType('Thycotic.PowerShell.EventPipeline.Summary[]')] [OutputType('Thycotic.PowerShell.EventPipeline.List[]')] param ( # TssSession object created by New-TssSession for authentication [Parameter(Mandatory,ValueFromPipeline,Position = 0)] [Thycotic.PowerShell.Authentication.Session] $TssSession, # Event Pipeline Policy ID [int] $PipelinePolicyId, # Event Pipeline Name [string] $PipelineName, # Event Entity Type [ValidateSet('Secret','User')] [Thycotic.PowerShell.Enums.EventEntityType] $EventEntityType, # Include inactive policies [switch] $IncludeInactive, # Exclude Active policies [switch] $ExcludeActive, # Sort by specific property, default EventPipelineName [string] $SortBy = 'EventPipelineName', [Parameter(Mandatory, ParameterSetName = 'detailed')] [switch] $Detailed ) begin { $tssParams = $PSBoundParameters $invokeParams = . $GetInvokeApiParams $TssSession } process { Get-TssInvocation $PSCmdlet.MyInvocation if ($tssParams.ContainsKey('TssSession') -and $TssSession.IsValidSession()) { Compare-TssVersion $TssSession '10.9.000000' $PSCmdlet.MyInvocation $uri = $TssSession.ApiUrl, 'event-pipeline', 'summaries' -join '/' if ($Detailed) { $uri = $TssSession.ApiUrl, 'event-pipeline', 'list' -join '/' } $uri = $uri, "sortBy[0].direction=asc&sortBy[0].name=$SortBy&take=$($TssSession.Take)" -join '?' $filters = @() switch ($tssParams.Keys) { 'PipelinePolicyId' { $filters += "filter.eventPipelinePolicyId=$PipelinePolicyId" } 'PipelineName' { $filters += "filter.eventPipelineName=$PipelineName" } 'EventEntityType' { $filters += "filter.eventEntityTypeId=$EventEntityType"} 'IncludeInactive' { $filters += "filter.includeInactive=$([boolean]$IncludeInactive)" } 'ExcludeActive' { $filters += "filter.includeActive=$([boolean]$ExcludeActive)" } 'FolderId' { $filters += "filter.folderId=$FolderId" } } if ($filters) { $uriFilter = $filters -join '&' Write-Verbose "Filters: $uriFilter" $uri = $uri, $uriFilter -join '&' } $invokeParams.Uri = $uri $invokeParams.Method = 'GET' Write-Verbose "Performing the operation $($invokeParams.Method) $($invokeParams.Uri)" try { $apiResponse = Invoke-TssApi @invokeParams $restResponse = . $ProcessResponse $apiResponse } catch { Write-Warning "Issue getting list of Event Pipeline" $err = $_ . $ErrorHandling $err } if ($Detailed) { if ($restResponse.records) { $unwrapViewField = { param($node) if ($node -is [System.Collections.IList]) { return , @(foreach ($item in $node) { & $unwrapViewField $item }) } if ($null -eq $node -or $node.GetType().FullName -ne 'System.Management.Automation.PSCustomObject') { return $node } if ($node.PSObject.Properties['fieldInputType'] -and $node.PSObject.Properties['value']) { return & $unwrapViewField $node.value } $flat = [ordered]@{ } foreach ($property in $node.PSObject.Properties) { $flat[$property.Name] = & $unwrapViewField $property.Value } [pscustomobject]$flat } . $GetEventPipelineList (& $unwrapViewField $restResponse.records) } } elseif ($restResponse.records) { [Thycotic.PowerShell.EventPipeline.Summary[]](. $FilterTssResponse $restResponse.records ([Thycotic.PowerShell.EventPipeline.Summary])) } } else { Write-Warning "No valid session found" } } } |