如何导出Windows 服务器上DNS解析记录值

# 设置 DNS 服务器
$DNSServer = "localhost"  # 替换为实际的 DNS 服务器名称

# 获取所有 DNS 区域
$zones = Get-WmiObject -Namespace "root\MicrosoftDNS" -Query "SELECT * FROM MicrosoftDNS_Zone" -ComputerName $DNSServer

# 初始化一个空的数组来存储 DNS 记录
$dnsRecords = @()

foreach ($zone in $zones) {
    $zoneName = $zone.Name
    Write-Output "处理区域: $zoneName"

    # 获取每个区域的所有 A 记录
    $aQuery = "SELECT * FROM MicrosoftDNS_AType WHERE ContainerName = '$zoneName'"
    try {
        $aRecords = Get-WmiObject -Namespace "root\MicrosoftDNS" -Query $aQuery -ComputerName $DNSServer
    } catch {
        Write-Error "无法获取 A 记录: $_"
        continue
    }

    foreach ($record in $aRecords) {
        $dnsRecord = [PSCustomObject]@{
            ZoneName = $zoneName
            DomainName = $record.OwnerName
            RecordType = "A"
            IPAddress = $record.RecordData
            TargetName = $null  # CNAME记录没有 IP 地址,所以用 $null
        }
        $dnsRecords += $dnsRecord
    }

    # 获取每个区域的所有 CNAME 记录
    $cnameQuery = "SELECT * FROM MicrosoftDNS_CNAMEType WHERE ContainerName = '$zoneName'"
    try {
        $cnameRecords = Get-WmiObject -Namespace "root\MicrosoftDNS" -Query $cnameQuery -ComputerName $DNSServer
    } catch {
        Write-Error "无法获取 CNAME 记录: $_"
        continue
    }

    foreach ($record in $cnameRecords) {
        $dnsRecord = [PSCustomObject]@{
            ZoneName = $zoneName
            DomainName = $record.OwnerName
            RecordType = "CNAME"
            IPAddress = $null  # CNAME记录没有 IP 地址,所以用 $null
            TargetName = $record.PrimaryName
        }
        $dnsRecords += $dnsRecord
    }
}

# 导出到 CSV 文件
if ($dnsRecords.Count -gt 0) {
    $dnsRecords | Export-Csv -Path "C:\dns_records.csv" -NoTypeInformation
    Write-Output "DNS 记录已导出到 C:\dns_records.csv"
} else {
    Write-Output "没有 DNS 记录可导出"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huainian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值