Public/Remove-AvdSessionHost.ps1
function Remove-AvdSessionhost { <# .SYNOPSIS Removing sessionhosts from an Azure Virtual Desktop hostpool. .DESCRIPTION The function will search for sessionhosts and will remove them from the Azure Virtual Desktop hostpool. .PARAMETER HostpoolName Enter the WVD Hostpool name .PARAMETER ResourceGroupName Enter the WVD Hostpool resourcegroup name .PARAMETER SessionHostName Enter the sessionhosts name .EXAMPLE Remove-AvdSessionhost -HostpoolName avd-hostpool-personal -ResourceGroupName rg-avd-01 -SessionHostName avd-host-1.wvd.domain #> [CmdletBinding()] param ( [parameter(Mandatory, ParameterSetName = 'Parameters')] [ValidateNotNullOrEmpty()] [string]$HostpoolName, [parameter(Mandatory, ParameterSetName = 'Parameters')] [ValidateNotNullOrEmpty()] [string]$ResourceGroupName, [parameter(Mandatory, ParameterSetName = 'Parameters')] [ValidateNotNullOrEmpty()] [string]$SessionHostName ) Begin { Write-Verbose "Start removing sessionhosts" AuthenticationCheck $token = GetAuthToken -resource $Script:AzureApiUrl $apiVersion = "?api-version=2021-03-09-preview" } Process { switch ($PsCmdlet.ParameterSetName) { Parameters { $url = $Script:AzureApiUrl + "/subscriptions/" + $script:subscriptionId + "/resourceGroups/" + $ResourceGroupName + "/providers/Microsoft.DesktopVirtualization/hostpools/" + $HostpoolName + "/sessionHosts/" + $SessionHostName + $apiVersion $parameters = @{ uri = $url Headers = $token Method = "DELETE" } try { $results = Invoke-RestMethod @parameters } catch { Throw $_ } } } return $results } } |