Add admin to CVAD in an Ansible Library
How to use
This lightweight Ansible library simplifies the management of Citrix Virtual Apps and Desktops (CVAD) administrators and groups, offering three configurable options:
- adminaddress: This mandatory parameter specifies the fully qualified domain name (FQDN) of the Citrix Delivery Controller.
- adduserorgroup: This optional parameter defines a list of users or groups who will be granded access to CVAD.
- action: This has two option ‘add’ or ‘delete’
  - name: Add Citrix administrator group
    citrix_admin_config:
      adduserorgroup: "{{ Usetname or group}}" 
      adminaddress: "{{ Delivery controller }}:80"
      action: "add"
Library code
To integrate the Citrix admin configuration into Ansible, create a YAML file named citrix_admin_config.ps1 to store it in the library folder
#!powershell
#Requires -Module Ansible.ModuleUtils.Legacy
#Requires -Module Ansible.ModuleUtils.Backup
$params = Parse-Args $args -supports_check_mode $true
$adminAddress = Get-AnsibleParam $params "adminaddress" -type "str" 
$addUserOrGroup = ("AD\" + (Get-AnsibleParam $params "adduserorgroup" -type "str"))
$action = Get-AnsibleParam $params "action" -type "str"
$result = @{
    changed = $false
}
if ($action -eq "add") {
    try { 
        Get-AdminAdministrator -AdminAddress $adminaddress -Name $addUserOrGroup -ErrorAction Stop
        Exit-Json $result "unable to create, already existing: $addUserOrGroup"
    }
    catch {
        try {
            New-AdminAdministrator  -AdminAddress $adminaddress -Enabled $True -Name $addUserOrGroup
            Add-AdminRight  -AdminAddress $adminaddress -Administrator $addUserOrGroup -Role "Full Administrator" -Scope "All"
            $result.changed = $true
            Exit-Json $result "succesfully created: $addUserOrGroup"       
        }
        catch {
            # Write-Host "unable to create new administrator $addUserOrGroup" 
            Fail-Json $result "unable to create: $addUserOrGroup" 
        }
    }
}
if ($action -eq "delete") {
    try {
        try {
            #first check if account does exist
            Get-AdminAdministrator -AdminAddress $adminaddress -Name $addUserOrGroup -ErrorAction Stop
            Remove-AdminAdministrator  -AdminAddress $adminAddress -Name $addUserOrGroup -ErrorAction Stop
            $result.changed = $True 
            Exit-Json $result "succesfully deleted: $addUserOrGroup"
        }
        catch [System.Management.Automation.ItemNotFoundException] {
            # Write-Host "specific catch"
            Exit-Json $result "object not found: $addUserOrGroup"
        }
        catch {
            # Write-Host "generic catch: $_"
            Fail-Json $result "unable to delete: $addUserOrGroup" 
        }
    }
    catch {
        #  Write-Host "unable to delete $addUserOrGroup"
        Fail-Json $result "unable to delete: $addUserOrGroup"                 
    }
}
Exit-Json $result "unknown action specified: $action"