public/Set-ProofpointLicensing.ps1


<#
.SYNOPSIS

Sets Proofpoint Domain Features.
.DESCRIPTION

Sets Domain Verification settings for Proofpoint configured domain.

.PARAMETER Domain
Any Domain in org.

.PARAMETER LicenseCount
Number of licese seats

.PARAMETER LicensePackage
License Package, ("Beginner", "Business", "Advanced", "Professional")

.PARAMETER Trial
Enables/Disables Trial
Disable with -Trial:$False

.PARAMETER BeginnerPlus
Enables/Disables Beginner Plus
Disable with -BeginnerPlus:$False

.EXAMPLE

PS> Set-ProofpointLicense -Domain microsoft.com -LicenseCount 10 -LicensePackage Business -Trial:$False

#>
 



Function Set-ProofpointLicensing{
    [CmdletBinding(SupportsShouldProcess = $true)]
  Param(
        [Parameter(Mandatory=$true)]
        [string]$Domain,
        [int]$LicenseCount,
        [validateset ("Beginner", "Business", "Advanced", "Professional")] $LicensePackage,
        [switch]$Trial,
        [switch]$BeginnerPlus
        )
        $PSBoundParameters| Out-Null
  $Body = @{

  }  
  
  switch ($PSBoundParameters.keys){
    "LicenseCount" {$Body += @{license_count = "$($PSBoundParameters["AttachmentDefense"])"}}
    "LicensePackage" {$Body += @{package= "$($PSBoundParameters["LicensePackage"])"}}
    "Trial" {$Body += @{is_on_trial = "$($PSBoundParameters["Trial"])"}}
    "BeginnerPlus" {$Body += @{is_beginner_plus = "$($PSBoundParameters["BeginnerPlus"])"}}
  }

  $jsonBody = $Body | ConvertTo-Json
  
  
  if(!($PPheaders)){
  
    Write-Error "Not Connected to Proofpoint." 
   
  }
  
  
  
  
  try{
  Invoke-RestMethod -Uri "$PPURI/orgs/$Domain/licensing" -Headers $PPheaders -Method put -Body $jsonBody -ContentType 'application/json'
  }Catch{
    Write-Output "$_"
  }
  
  }