Functions/Public/catalog-service/Get-vRACatalogPrincipal.ps1
function Get-vRACatalogPrincipal { <# .SYNOPSIS Finds catalog principals .DESCRIPTION Internal function to find users or groups and return them as the api type catalogPrincipal. DOCS: catalog-service/api/docs/ns0_catalogPrincipal.html [pscustomobject] is returned with lowercase property names to commply with expected payload .PARAMETER Id The Id of the group .INPUTS System.String .OUTPUTS System.Management.Automation.PSObject. .EXAMPLE Get-vRACatalogPrincipal -Id group@vsphere.local .EXAMPLE Get-vRACatalogPrincipal -Id user@vsphere.local .EXAMPLE Get-vRACatalogPrincipal -Id group@vsphere.local #> [CmdletBinding(DefaultParameterSetName="Standard")][OutputType('System.Management.Automation.PSObject')] Param ( [Parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,ParameterSetName="Standard")] [ValidateNotNullOrEmpty()] [Alias("Principal")] [String[]]$Id ) Begin { } Process { try { foreach ($PrincipalId in $Id){ # -- Test for user first try { Write-Verbose -Message "Searching for USER $($PrincipalId)" $User = Get-vRAUserPrincipal -Id $PrincipalId Write-Verbose "User found!" $CatalogPrincipal = [pscustomobject] @{ tenantName = $($Global:vRAConnection.Tenant) ref = $($User.Principalid) type = "USER" value = $($User.Name) } } catch { Write-Verbose -Message "User $($PrincipalId) not found.." } # --- Test for group if the user was not found if (!$CatalogPrincipal) { try { Write-Verbose -Message "Searching for GROUP $($PrincipalId)" $Group = Get-vRAGroupPrincipal -Id $PrincipalId Write-Verbose -Message "Group found!" $CatalogPrincipal = [pscustomobject] @{ tenantName = $($Global:vRAConnection.Tenant) ref = $($Group.Principalid) type = "GROUP" value = $($Grop.Name) } } catch { Write-Verbose -Message "Group $($Id) not found.." } } # --- Test to see if either search returned anything if (!$CatalogPrincipal) { throw "$PrincipalId not found" } # --- Return the catalogPrincipal $CatalogPrincipal } } catch [Exception]{ throw } } End { } } |