Private/Set-XDAppGroupDG.ps1
function Set-XDAppGroupDG { <# .SYNOPSIS Sets application groups delivery groups .DESCRIPTION Sets application groups delivery groups .PARAMETER APPGROUP Exported application groups .PARAMETER XDHOST XenDesktop DDC hostname to connect to #> [cmdletbinding(SupportsShouldProcess = $true, ConfirmImpact='Low')] Param( [Parameter(Mandatory=$true,ValueFromPipeline=$true)]$appgroup, [Parameter(Mandatory=$true)][string]$xdhost ) begin{ Write-Verbose "BEGIN: $($MyInvocation.MyCommand)" } process { Write-Verbose "Setting $($appgroup.name)" $appgroupmatch = Get-BrokerApplicationGroup -Name $appgroup.name -adminaddress $xdhost if(($appgroup.DGNAMES).count -gt 0) { if(($appmatch.AssociatedDesktopGroupUids).count -gt 0) { $dgtemp = @() Write-Verbose "Setting Delivery Group(s) for Application Group $($appgroup.name)" foreach ($dg in $appgroupmatch.AssociatedDesktopGroupUids) { $dg = Get-BrokerDesktopGroup -uid $dg $dgtemp += $dg.name } $present = $dgtemp|Sort-Object $needed = $appgroup.dgnames|Sort-Object $compares = Compare-Object -ReferenceObject $present -DifferenceObject $needed if ($PSCmdlet.ShouldProcess("Setting Application Group $($appgroup.name) Permissions")) { foreach ($compare in $compares) { switch ($compare.SideIndicator) { "=>" {#$dg = Get-BrokerDesktopGroup -name $compare.InputObject Remove-BrokerApplicationGroup -InputObject $appgroupmatch -DesktopGroup $compare.InputObject } "<=" {#$dg = Get-BrokerDesktopGroup -name $compare.InputObject Add-BrokerApplicationGroup -InputObject $appgroupmatch -DesktopGroup $compare.InputObject } } } } } else { foreach ($dg in $appgroup.DGNAMES) { Add-BrokerApplicationGroup -InputObject $appgroupmatch -DesktopGroup $dg } } } } end{Write-Verbose "END: $($MyInvocation.MyCommand)"} } |