Public/Get-DuneActionAssignment.ps1
|
<#
.SYNOPSIS Retrieve action assignments. .DESCRIPTION Gets action-assignment objects. Supports filtering by `Id`, `ConfigItemId`, `ConfigItemType`, and scope. Referenced objects are always included. .PARAMETER Deployment A `DuneDeployment` object; returns assignments for the deployment (pipeline input supported). .PARAMETER ResourceGroup A `DuneResourceGroup` object; returns assignments for the resource group (pipeline input supported). .PARAMETER Resource A `DuneResource` object; returns assignments for the resource (pipeline input supported). .PARAMETER Id The GUID of a specific action assignment. .PARAMETER Name Filter assignments by name (supports wildcards). .PARAMETER Action A `DuneAction` object; returns assignments for the action. .PARAMETER ConfigItemType Filter by config item type. Valid values: Deployment, ResourceGroup, VirtualMachine, PhysicalMachine. .PARAMETER Scope Filter by action scope. .PARAMETER Raw If set, returns raw API objects instead of `DuneActionAssignment` objects. .EXAMPLE PS> Get-DuneActionAssignment Returns all action assignments. .EXAMPLE PS> Get-DuneDeployment -Name "app" | Get-DuneActionAssignment Returns assignments for a deployment via pipeline. #> function Get-DuneActionAssignment { [CmdletBinding(DefaultParameterSetName='Default')] param( [Parameter(ParameterSetName='Deployment',ValueFromPipeline)] [DuneDeployment]$Deployment, [Parameter(ParameterSetName='ResourceGroup',ValueFromPipeline)] [DuneResourceGroup]$ResourceGroup, [Parameter(ParameterSetName='Resource',ValueFromPipeline)] [DuneResource]$Resource, [Parameter(ParameterSetName='Id')] [guid]$Id, [Parameter()] [string]$Name, [Parameter(ParameterSetName='Action')] [DuneAction]$Action, [Parameter(ParameterSetName='ByConfigItemType')] [ValidateSet('Deployment','ResourceGroup','VirtualMachine','PhysicalMachine')] [string]$ConfigItemType, [Parameter(ParameterSetName='ByScope')] [ActionScopes]$Scope, # [Parameter()] # [switch]$IncludeReferencedObjects, [Parameter()] [switch]$Raw ) begin { Write-Debug "$($MyInvocation.MyCommand)|begin" $ReturnObjects = @() $ProcessedUrls = @() $BaseUri = 'action-assignments' $Method = 'GET' } process { Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)" $Uri = switch ($PSCmdlet.ParameterSetName) { 'Id' { "{0}/{1}" -f $BaseUri, $Id } 'Deployment' { $BaseUri | Add-UriQueryParam 'ConfigItemType=Deployment' | Add-UriQueryParam "ConfigItemId=$($Deployment.Id)" } 'ResourceGroup' { $BaseUri | Add-UriQueryParam 'ConfigItemType=ResourceGroup' | Add-UriQueryParam "ConfigItemId=$($ResourceGroup.Id)" } 'Resource' { $BaseUri | Add-UriQueryParam "ConfigItemType=$($Resource.ObjectType)" | Add-UriQueryParam "ConfigItemId=$($Resource.Id)" } 'Action' { $BaseUri | Add-UriQueryParam "ActionId=$($Action.Id)" } 'ByConfigItemType' { $BaseUri | Add-UriQueryParam "ConfigItemType=$($ConfigItemType)" } 'ByScope' { $BaseUri | Add-UriQueryParam "Scope=$($Scope)" } Default { $BaseUri } } if ($PSBoundParameters.ContainsKey('Name')) { $Uri = $Uri | Add-UriQueryParam "NameILike=$Name" -ConvertWildcards } # if ($IncludeReferencedObjects) { $Uri = $Uri | Add-UriQueryParam 'IncludeReferencedObjects=1' } $Uri = $Uri | Add-UriQueryParam "IncludeReferencedObjects=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 DuneActionAssignment -InputObject $_ } } } else { Write-Debug "$($MyInvocation.MyCommand)|process|ApiCall Cache hit: $Uri" } } end { return $ReturnObjects } } |