Public/Import-XDApplicationGroup.ps1

function Import-XDApplicationGroup
{
<#
.SYNOPSIS
    Creates application group from imported object
.DESCRIPTION
    Creates application group from imported object
.PARAMETER AG
    Application Group to create
.PARAMETER XDHOST
    XenDesktop DDC hostname to connect to
.EXAMPLE
    $XDEXPORT.appgroups|import-xdapplicationgroup
    Creates application groups from imported application group object
#>

[cmdletbinding()]
Param(
[Parameter(Mandatory=$true,ValueFromPipeline=$true)][object]$ag,
[Parameter(Mandatory=$true)][string]$xdhost
)
begin{
Write-Verbose "BEGIN: $($MyInvocation.MyCommand)"
}
Process
{

        $agmatch = Get-BrokerApplicationGroup -AdminAddress $xdhost -Name $ag.name -ErrorAction SilentlyContinue
        if ($agmatch -is [object])
        {
        write-verbose "Found $($ag.Name)"
        Set-XDAppGroup -xdhost $xdhost -appgroupmatch $agmatch -appgroup $ag
        Set-XDAppGroupUserPerm -xdhost $xdhost -appgroupmatch $agmatch -appgroup $ag
        Set-XDAppGroupDG -xdhost $xdhost -appgroup $ag
        }
        else
        {
        write-verbose "Adding $($ag.name)"
        $agmatch = New-XDAppGroup -xdhost $xdhost -appgroup $ag
        Set-XDAppGroupUserPerm -xdhost $xdhost -appgroupmatch $agmatch -appgroup $ag
        Set-XDAppGroupDG -xdhost $xdhost -appgroup $ag
        }
    return $agmatch
    }
    end{Write-Verbose "END: $($MyInvocation.MyCommand)"}
}