Functions/Public/catalog-service/Get-vRACatalogPrincipal.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
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 { } } |