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

如何在脚本中显示Azure Virtual Desktop会话主机属性而非序列化对象

解决Azure AVD会话主机属性仅显示类型名的问题

问题根源

你当前脚本用Write-Host $sessionHost输出对象时,PowerShell会调用该对象的ToString()方法,而Azure PowerShell返回的SessionHost对象默认字符串表示就是它的类型全称(Microsoft.Azure.PowerShell.Cmdlets.DesktopVirtualization.Models.Api202209.SessionHost),所以看不到具体属性。哪怕尝试用Format-List,如果还是搭配Write-Host输出,同样只会显示格式化对象的类型名,而非实际属性内容。

修复方案

方案1:直接输出对象(推荐)

去掉Write-Host,直接输出$sessionHost,PowerShell会自动识别对象类型并格式化展示其属性;或者用Format-List *强制显示所有属性:

$resourceGroup = "Group1"

$hostPoolObjects = Get-AzWvdHostPool -ResourceGroupName $resourceGroup

foreach ($hostPool in $hostPoolObjects) {
    $sessionHosts = Get-AzWvdSessionHost -HostPoolName $hostPool.Name -ResourceGroupName $resourceGroup
    foreach ($sessionHost in $sessionHosts) {
        # 直接输出,PowerShell自动格式化
        $sessionHost
        
        # 若要查看所有属性,替换为下面一行
        # $sessionHost | Format-List *
    }
}

方案2:提取指定属性输出

如果需要用Write-Host自定义输出格式,直接提取对象的具体属性值:

$resourceGroup = "Group1"

$hostPoolObjects = Get-AzWvdHostPool -ResourceGroupName $resourceGroup

foreach ($hostPool in $hostPoolObjects) {
    $sessionHosts = Get-AzWvdSessionHost -HostPoolName $hostPool.Name -ResourceGroupName $resourceGroup
    foreach ($sessionHost in $sessionHosts) {
        Write-Host "会话主机名:$($sessionHost.Name),状态:$($sessionHost.Status),当前会话数:$($sessionHost.Session)"
    }
}

方案3:用Select-Object筛选属性

如果只需要查看部分核心属性,可通过Select-Object指定:

$resourceGroup = "Group1"

$hostPoolObjects = Get-AzWvdHostPool -ResourceGroupName $resourceGroup

foreach ($hostPool in $hostPoolObjects) {
    $sessionHosts = Get-AzWvdSessionHost -HostPoolName $hostPool.Name -ResourceGroupName $resourceGroup
    $sessionHosts | Select-Object Name, Status, Session, LastHeartBeat
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:46:05