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

如何展开PowerShell返回对象中MX属性的嵌套内容?

解决PowerShell DNS查询返回对象中MX属性嵌套显示的问题

当你把MX记录对象作为自定义返回对象的属性时,PowerShell默认会用嵌套对象的字符串表示(比如@{Name=smtp.google.com; pref=10; ttl=300})来显示,而单独查看MX变量时,PowerShell会调用对应类型的格式化视图,所以能正常展示为表格。要让返回对象中的MX属性也展开显示,有几种实用方法:

方法1:使用计算属性拆分MX字段

如果需要保留结构化数据同时展开显示,可以通过Select-Object的计算属性,把MX的子属性单独提取出来:

假设你的脚本返回的自定义对象是这样的:

$dnsResult = [PSCustomObject]@{
    Domain = "google.com"
    MX = Resolve-DnsName -Name google.com -Type MX
    ARecords = Resolve-DnsName -Name google.com -Type A
}

执行以下命令即可展开MX属性:

$dnsResult | Select-Object -Property Domain, ARecords,
    @{Name='MX_Preference'; Expression={$_.MX.Pref}},
    @{Name='MX_Server'; Expression={$_.MX.Name}},
    @{Name='MX_TTL'; Expression={$_.MX.TTL}}

如果目标域名有多个MX记录,需要把所有记录拼接成可读格式:

$dnsResult | Select-Object -Property Domain, ARecords,
    @{
        Name='MX_Records'
        Expression={
            $_.MX | ForEach-Object { "优先级: $($_.Pref), 服务器: $($_.Name), TTL: $($_.TTL)" } -join "`n"
        }
    }

方法2:输出时强制展开嵌套对象

如果只是临时查看,不需要保留结构化数据,可以用Format-Table结合Out-String直接展开MX记录:

$dnsResult | Format-Table -Property Domain, ARecords,
    @{
        Label='MX记录'
        Expression={ $_.MX | Format-Table -AutoSize | Out-String -Stream | Where-Object { $_ -ne '' } }
    } -Wrap

这种方式会把MX表格转换成字符串嵌入到输出中,适合快速查看,但不适合后续的脚本处理。

方法3:修改自定义对象结构(推荐)

如果你的脚本是返回自定义对象,直接在构建对象时就把MX记录处理成展开的格式,比如把多个MX记录整理成数组:

function Get-DnsFullRecord {
    param($Domain)
    $mxRecords = Resolve-DnsName -Name $Domain -Type MX | ForEach-Object {
        [PSCustomObject]@{
            Priority = $_.Pref
            Server = $_.Name
            TTL = $_.TTL
        }
    }

    [PSCustomObject]@{
        Domain = $Domain
        MXRecords = $mxRecords
        ARecords = Resolve-DnsName -Name $Domain -Type A
    }
}

# 调用后直接查看,MXRecords会自动展开为表格
Get-DnsFullRecord -Domain google.com

这样构建的对象,PowerShell会自动识别MXRecords是对象数组,输出时会用表格或列表形式展开显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:25:30