Public/Get-AvdSessionHost.ps1
function Get-AvdSessionHost { <# .SYNOPSIS Gets the current AVD Session hosts from a specific hostpool. .DESCRIPTION This function will grab all the sessionhost from a specific 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 Get-AvdSessionhost -HostpoolName avd-hostpool-personal -ResourceGroupName rg-avd-01 -SessionHostName avd-host-1.wvd.domain -AllowNewSession $true #> [CmdletBinding(DefaultParameterSetName = 'All')] param ( [parameter(Mandatory, ParameterSetName = 'All')] [parameter(Mandatory, ParameterSetName = 'Hostname')] [ValidateNotNullOrEmpty()] [string]$HostpoolName, [parameter(Mandatory, ParameterSetName = 'All')] [parameter(Mandatory, ParameterSetName = 'Hostname')] [ValidateNotNullOrEmpty()] [string]$ResourceGroupName, [parameter(Mandatory, ParameterSetName = 'Hostname')] [ValidateNotNullOrEmpty()] [string]$SessionHostName ) Begin { Write-Verbose "Start searching session hosts" AuthenticationCheck $token = GetAuthToken -resource "https://management.azure.com" $baseUrl = "https://management.azure.com/subscriptions/" + $script:subscriptionId + "/resourceGroups/" + $ResourceGroupName + "/providers/Microsoft.DesktopVirtualization/hostpools/" + $HostpoolName + "/sessionHosts/" } Process { switch ($PsCmdlet.ParameterSetName) { All { Write-Verbose 'Using base url for getting all session hosts in $hostpoolName' } Hostname{ $baseUrl = $baseUrl + $SessionHostName } } $apiVersion = "?api-version=2019-12-10-preview" $parameters = @{ uri = $baseUrl+$apiVersion Method = "GET" Headers = $token } $results = Invoke-RestMethod @parameters return $results } } |