public/New-Admin.ps1
function New-Admin { [CmdletBinding(DefaultParameterSetName = "ByObject")] param( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Inline")] [string]$Name, [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Inline")] [string]$Email, [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = "Inline")] [Alias("orgAccess")] [string]$OrganizationAccess, [Parameter(ValueFromPipelineByPropertyName = $true)] [PSCustomObject[]]$Tags, [Parameter(ValueFromPipelineByPropertyName = $true)] [PSCustomObject[]]$Networks, [Parameter(ValueFromPipelineByPropertyName = $true)] [string]$OrganizationId = $env:MerakiOrganizationId ) Begin { try { if (!$OrganizationId) { Write-Error -Exception ([System.Management.Automation.PSArgumentNullException]::new()) ` -Message "Parameter OrganizationId was not specified, and attempt to infer from `env:MerakiOrganizationId failed." ` -ErrorAction Stop } [string]$uri = "$endpoint/organizations/$OrganizationId/admins" $queryUriRedirect = Invoke-WebRequest -Method GET -Uri $uri -MaximumRedirection 0 -Headers $headers -ErrorAction SilentlyContinue $uri = $queryUriRedirect.Headers.Location } catch {$PSCmdlet.ThrowTerminatingError($PSitem)} } Process { try { [PSCustomObject]$newAdmin = New-Object -TypeName PSObject -Property @{ name = $Name email = $Email orgAccess = $OrganizationAccess tags = $Tags networks = $Networks } $body = $newAdmin | ConvertTo-Json Invoke-RestMethod -Method POST -Uri $uri -Headers $headers -Body $body -ContentType 'application/json' } catch { $PSCmdlet.ThrowTerminatingError($PSitem) } } } |