Public/Enable-AvdScalingPlan.ps1
function Enable-AvdScalingPlan { <# .SYNOPSIS Enables an Azure Virtual Desktop scaling plan. .DESCRIPTION The function will enable an Azure Virtual Desktop scaling plan for the given hostpool(s). .PARAMETER Name Enter the scaling plan name .PARAMETER ResourceGroupName Enter the resourcegroup name .PARAMETER AssignToHostPool Enter the AVD Hostpool names and resource groups (eg. @{"Hostpool-1" = "RG-AVD-01"; "Hostpool-2" = "RG-AVD-02" } .EXAMPLE Enable-AvdScalingPlan -Name 'ScalingPlan' -ResourceGroupName 'rg-avd-01' -Hostpool @{"Hostpool-1" = "RG-AVD-01"} #> [CmdletBinding()] param ( [parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string]$Name, [parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string]$ResourceGroupName, [parameter(Mandatory)] [ValidateNotNullOrEmpty()] [object]$HostPool ) Begin { Write-Verbose "Start enabling host pool in scaling plan $Name" $url = "{0}/subscriptions/{1}/resourceGroups/{2}/providers/Microsoft.DesktopVirtualization/scalingPlans/{3}?api-version={4}" -f $global:AzureApiUrl, $global:subscriptionId, $ResourceGroupName, $Name, $global:scalingPlanApiVersion $planInfo = Get-AvdScalingPlan -Name $Name -ResourceGroupName $ResourceGroupName $body = @{ location = $planInfo.location properties = @{} } } Process { $HostPool.GetEnumerator() | ForEach-Object { $hostpoolInfo = Get-AvdHostPool -HostPoolName $_.Key -ResourceGroupName $_.Value $planInfo.properties.hostPoolReferences | Where-Object {$_.hostpoolArmPath -eq $hostpoolInfo.id} | ForEach-Object { $_.scalingPlanEnabled = $true } } $body.properties.Add("hostPoolReferences", $planInfo.properties.hostPoolReferences) $jsonBody = $body | ConvertTo-Json -Depth 6 $parameters = @{ URI = $url Method = "PATCH" Body = $jsonBody } $results = Request-Api @parameters $results } } |