Functions/Public/identity/New-vRAGroupPrincipal.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 |
function New-vRAGroupPrincipal { <# .SYNOPSIS Create a vRA custom group .DESCRIPTION Create a vRA Principal (user) .PARAMETER Tenant The tenant of the group .PARAMETER Name Group name .PARAMETER Description A description for the group .PARAMETER JSON Body text to send in JSON format .INPUTS System.String. .OUTPUTS System.Management.Automation.PSObject .EXAMPLE New-vRAGroupPrincipal -Name TestGroup01 -Description "Test Group 01" .EXAMPLE $JSON = @" { "@type": "Group", "groupType": "CUSTOM", "name": "TestGroup01", "fqdn": "TestGroup01@Tenant", "domain": "Tenant", "description": "Test Group 01", "principalId": { "domain": "Tenant", "name": "TestGroup01" } } "@ #> [CmdletBinding(SupportsShouldProcess,ConfirmImpact="Low",DefaultParameterSetName="Standard")][OutputType('System.Management.Automation.PSObject')] Param ( [parameter(Mandatory=$false,ParameterSetName="Standard")] [ValidateNotNullOrEmpty()] [String]$Tenant = $Global:vRAConnection.Tenant, [parameter(Mandatory=$true,ParameterSetName="Standard")] [ValidateNotNullOrEmpty()] [String]$Name, [parameter(Mandatory=$false,ParameterSetName="Standard")] [ValidateNotNullOrEmpty()] [String]$Description, [parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName="JSON")] [ValidateNotNullOrEmpty()] [String]$JSON ) begin { } process { try { # --- Set Body for REST request depending on ParameterSet if ($PSBoundParameters.ContainsKey("JSON")){ $Body = $JSON $Tenant = ($JSON | ConvertFrom-Json).domain } else { $Body = @" { "@type": "Group", "groupType": "CUSTOM", "name": "$($Name)", "fqdn": "$($Name)@$($Tenant)", "domain": "$($Tenant)", "description": "$($Description)", "principalId": { "domain": "$($Tenant)", "name": "$($Name)" } } "@ } if ($PSCmdlet.ShouldProcess($Name)){ $URI = "/identity/api/tenants/$($Tenant)/groups" Write-Verbose -Message "Preparing POST to $($URI)" # --- Run vRA REST Request Invoke-vRARestMethod -Method POST -URI $URI -Body $Body | Out-Null Get-vRAGroupPrincipal -Tenant $Tenant -Id "$($Name)@$($Tenant)" } } catch [Exception]{ throw } } end { } } |