Public/Get-DuneAction.ps1
|
<# .SYNOPSIS Retrieve actions. .DESCRIPTION Gets action objects. Supports filtering by `Id`, `Name`, and configuration item context. Use `-Raw` to return raw API objects. #> function Get-DuneAction { [CmdletBinding(DefaultParameterSetName = 'Default')] param( [Parameter(Position=0)] [string]$Name, [Parameter()] [string]$DisplayName, [Parameter(ParameterSetName='Id')] [guid]$Id, [Parameter(ParameterSetName='ActionAssignment', ValueFromPipeline)] [DuneActionAssignment]$ActionAssignment, [Parameter()] [ActionScopes]$Scope, [Parameter()] [switch]$IncludeReferencedObjects, [Parameter()] [switch]$Raw, [Parameter()] [switch]$IncludeDeleted ) begin { Write-Debug "$($MyInvocation.MyCommand)|begin" $ReturnObjects = @() $ProcessedUrls = @() $BaseUri = 'actions' $Method = 'GET' } process { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)" $Uri = switch ($PSCmdlet.ParameterSetName) { 'Id' { "{0}/{1}" -f $BaseUri, $Id } 'ActionAssignment' { "{0}/{1}" -f $BaseUri, $ActionAssignment.ActionId } 'Name' { $BaseUri | Add-UriQueryParam 'N' } Default { $BaseUri } } if ($PSBoundParameters.ContainsKey('Name')) { $Uri = $Uri | Add-UriQueryParam "NameILike=$Name" -ConvertWildcards } if ($PSBoundParameters.ContainsKey('DisplayName')) { $Uri = $Uri | Add-UriQueryParam "DisplayNameILike=$DisplayName" -ConvertWildcards } if ($PSBoundParameters.ContainsKey('Scope')) { $Uri = $Uri | Add-UriQueryParam "Scope=$Scope" -ConvertWildcards } if ($IncludeReferencedObjects) { $Uri = $Uri | Add-UriQueryParam 'IncludeReferencedObjects=1' } if ($IncludeDeleted) { $Uri = $Uri | Add-UriQueryParam "IncludeDeleted=1" } if ($ProcessedUrls -notcontains $Uri) { $ResultItems = Invoke-DuneApiRequest -Uri $Uri -Method $Method -ExtractItems $ProcessedUrls += $Uri $ReturnObjects += $ResultItems | ForEach-Object { if ($Raw) { $_ } else { ConvertTo-DuneClassObject -Class DuneAction -InputObject $_ } } } else { Write-Debug "$($MyInvocation.MyCommand)|process|ApiCall Cache hit: $Uri" } } end { return $ReturnObjects } } |