首页 > 解决方案 > dnsserverresourcerecord - 所有扩展属性和区域

问题描述

Get-DnsServerResourceRecord -ComputerName server -ZoneName zone.com

我想运行此命令并获取 HostName、RecordType、ZoneName 和所有 RecordData 集。

到目前为止,我有类似的东西:

Get-DnsServerResourceRecord zone.com -ComputerName server |
    select hostname, recordType, name,
        @{Name='ARecordData';Expression={$_.RecordData.IPv4Address}},
        @{Name='CNameRecordData';Expression={$_.RecordData.HostnameAlias}}

我的问题是两个方面。

  1. 我需要知道如何将 ZoneName 放入记录集中,因此如果我想传递多个区域,我可以将这些数据分开。
  2. 上面的示例将为每个 RecordData 创建不同的列。由于 DNS 记录将只有其中一个值,有没有办法通过 PowerShell 将它们组合成一列?

标签: powershelldnscustomproperty

解决方案


  1. 您可以像处理记录数据一样将区域名称添加为计算属性。

    foreach ($zone in $zone_list) {
        Get-DnsServerResourceRecord -ZoneName $zone -ComputerName server |
            Select-Object hostname, @{n='ZoneName';e={$zone}}, recordType, ...
    }
    
  2. 不要创建单个属性,而是使用switch语句根据单个属性中的记录类型选择相关数据。

    ... | Select-Object hostname ..., @{n='Data';e={
        $rr = $_
        switch ($rr.RecordType) {
            'A'     {$rr.RecordData.IPv4Address}
            'CNAME' {$rr.RecordData.HostnameAlias}
            ...
        }
    }}
    

推荐阅读