You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell获取指定主机池(host pool)下的虚拟机(VM)列表

特定Azure主机池下关联虚拟机列表查询方案

Azure 主机池与虚拟机的关联关系属于 Azure 虚拟桌面(AVD)的专属资源属性,不会直接暴露在Get-AzVM返回的虚拟机基础属性中,需要通过 AVD 会话主机资源作为桥接完成关联查询。

操作前置要求

  • 提前安装 Azure 虚拟桌面对应 PowerShell 模块:
    Install-Module -Name Az.DesktopVirtualization -Force
    Import-Module Az.DesktopVirtualization
    
  • 执行前先完成 Azure 账号鉴权:Connect-AzAccount,多租户环境需指定对应租户ID。

具体查询步骤

  1. 先获取目标主机池的资源对象
    # 替换尖括号内的参数为你的实际资源信息
    $hostPool = Get-AzWvdHostPool -ResourceGroupName <目标资源组名称> -Name <目标主机池名称>
    
  2. 查询该主机池下挂载的所有会话主机资源(包含关联VM的资源ID)
    $sessionHosts = Get-AzWvdSessionHost -HostPoolName $hostPool.Name -ResourceGroupName $hostPool.ResourceGroupName
    
  3. 关联查询对应虚拟机的完整详细信息
    $relatedVMs = foreach ($sessionHost in $sessionHosts) {
        Get-AzVM -Id $sessionHost.VmResourceId
    }
    # 输出格式化的VM基础信息
    $relatedVMs | Select-Object Name, ResourceGroupName, Location, VmId, ProvisioningState, PowerState | Format-Table -AutoSize
    

扩展:合并输出主机池会话状态与VM信息

如果需要同时查看虚拟机的运行状态、以及在主机池内的会话状态,可以使用以下脚本生成合并报表:

$mergeResult = foreach ($sessionHost in $sessionHosts) {
    $vm = Get-AzVM -Id $sessionHost.VmResourceId
    [PSCustomObject]@{
        虚拟机名称 = $vm.Name
        所属主机池 = $hostPool.Name
        会话主机状态 = $sessionHost.Status
        允许新会话 = $sessionHost.AllowNewSession
        虚拟机运行状态 = $vm.PowerState
        操作系统版本 = "$($vm.StorageProfile.ImageReference.Offer) $($vm.StorageProfile.ImageReference.Sku)"
        所属资源组 = $vm.ResourceGroupName
    }
}
$mergeResult | Format-Table -AutoSize

内容的提问来源于stack exchange,提问作者Mamquam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:45:04