Public/Get-DuneActionAssignment.ps1
|
<# .SYNOPSIS Retrieve action assignments. .DESCRIPTION Gets action-assignment objects. Supports filtering by `Id`, `ConfigItemId`, `ConfigItemType`, and `IncludeReferencedObjects`. #> 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 } } |