Windows DNS からすべての DNS レコードのバックアップを取得したいと考えています。 DNS マネージャーは、このようなエクスポートに関して非常に制限されています。適切な DNS レコードをエクスポートする唯一の方法は、PowerShell を使用することです。この記事では、PowerShell を使用して DNS レコードを CSV ファイルにエクスポートする方法を学習します。
DNS マネージャーで単一の DNS ゾーンからすべてのレコードをエクスポートする方法を見てみましょう。
- 開けるDNSマネージャー
- を右クリックします。ゾーン
- 選択リストをエクスポート…

- エクスポートファイルに名前を付けます
- ファイルの種類として保存テキスト (カンマ区切り) (*.csv)
- クリック保存

- CSV ファイルを Microsoft Excel または別のプログラムで開きます。

DNS マネージャーからの単一ゾーンのエクスポートは高速です。 CSV ファイルの値は、DNS マネージャーと同じ値を示します。唯一の問題は、ファイル内にカンマ (,) が含まれていると列が正常に表示されないことです。
もっと詳しく知る:PowerShell で Export-CSV を使用する方法
DNS マネージャーからすべての前方参照ゾーンをエクスポートする
DNS マネージャーからすべての前方参照 DNS ゾーン レコードをエクスポートするには、次の手順を実行します。
- 開けるDNSマネージャー
- を右クリックします。ゾーン
- 選択リストをエクスポート…

- エクスポートファイルに名前を付けます
- ファイルの種類として保存テキスト (カンマ区切り) (*.csv)
- クリック保存

- CSV ファイルを Microsoft Excel または別のプログラムで開きます。

大きな問題は、DNS レコードがまったく表示されないことです。したがって、レコードを表示するには、DNS マネージャーからすべての DNS サーバー ゾーンを個別にエクスポートする必要があります。
また、別の物件を所有したい場合はどうすればよいですか?たとえば、Time to Live プロパティをエクスポートに含めると優れています。これを取得する唯一の方法は PowerShell を使用することです。次のステップでそれを見てみましょう。
PowerShell を使用して単一ゾーンの DNS レコードを CSV ファイルにエクスポートする
単一の DNS ゾーンから CSV ファイルにレコードをエクスポートする優れた方法は、PowerShell スクリプトを使用することです。それは、Get-DnsServerResourceRecordコマンドレットを使用して、指定したゾーンから DNS リソース レコードを取得します。
注記:PowerShell スクリプトは DNS レコードもエクスポートします生存時間(TTL) プロパティ。 CSV ファイルで簡単に確認できます。 Time to Live は列の合計秒数として表示されます。
- Windows PowerShell ISE を管理者として実行する
- 以下のスクリプトをコピーして PowerShell に貼り付けます
- DNS ゾーン名を変更します2行目
- PS スクリプトを実行する
$Report = [System.Collections.Generic.List[Object]]::new()
$zoneName = "autodiscover.exoip.com"
$zoneInfo = Get-DnsServerResourceRecord -ZoneName $zoneName
foreach ($info in $zoneInfo) {
$timestamp = if ($info.Timestamp) { $info.Timestamp } else { "static" }
$timetolive = $info.TimeToLive.TotalSeconds
$recordData = switch ($info.RecordType) {
'A' { $info.RecordData.IPv4Address }
'CNAME' { $info.RecordData.HostnameAlias }
'NS' { $info.RecordData.NameServer }
'SOA' { "[$($info.RecordData.SerialNumber)] $($info.RecordData.PrimaryServer), $($info.RecordData.ResponsiblePerson)" }
'SRV' { $info.RecordData.DomainName }
'PTR' { $info.RecordData.PtrDomainName }
'MX' { $info.RecordData.MailExchange }
'AAAA' { $info.RecordData.IPv6Address }
'TXT' { $info.RecordData.DescriptiveText }
default { $null }
}
$ReportLine = [PSCustomObject]@{
Name = $zoneName
Hostname = $info.Hostname
Type = $info.RecordType
Data = $recordData
Timestamp = $timestamp
TimeToLive = $timetolive
}
$Report.Add($ReportLine)
}
$Report | Export-Csv "C:tempSingleDNSZoneRecords.csv" -NoTypeInformation -Encoding utf8CSV ファイルのエクスポートは次の場所にあります。C:温度。 CSV ファイルは次のようになります。

すべてのゾーンを通過してエクスポートするには時間がかかります。これは、単一の DNS サーバー ゾーンのみをエクスポートする場合に便利ですが、すべての DNS ゾーン レコードをエクスポートする場合には便利ではありません。
PowerShell を使用してすべての DNS ゾーン レコードを CSV ファイルにエクスポートする
すべての DNS ゾーン レコードをエクスポートするには、以下の PowerShell スクリプトを実行します。それは、Get-DnsServerZoneDNS サーバー上の DNS ゾーンを取得するコマンドレットとGet-DnsServerResourceRecordコマンドレットを使用して、すべてのゾーンから DNS リソース レコードを取得します。
スクリプトは両方の Windows DNS ゾーンを通過します。
- 前方参照ゾーン
- 逆引き参照ゾーン
$Report = [System.Collections.Generic.List[Object]]::new()
$zones = Get-DnsServerZone
foreach ($zone in $zones) {
$zoneInfo = Get-DnsServerResourceRecord -ZoneName $zone.ZoneName
foreach ($info in $zoneInfo) {
$timestamp = if ($info.Timestamp) { $info.Timestamp } else { "static" }
$timetolive = $info.TimeToLive.TotalSeconds
$recordData = switch ($info.RecordType) {
'A' { $info.RecordData.IPv4Address }
'CNAME' { $info.RecordData.HostnameAlias }
'NS' { $info.RecordData.NameServer }
'SOA' { "[$($info.RecordData.SerialNumber)] $($info.RecordData.PrimaryServer), $($info.RecordData.ResponsiblePerson)" }
'SRV' { $info.RecordData.DomainName }
'PTR' { $info.RecordData.PtrDomainName }
'MX' { $info.RecordData.MailExchange }
'AAAA' { $info.RecordData.IPv6Address }
'TXT' { $info.RecordData.DescriptiveText }
default { $null }
}
$ReportLine = [PSCustomObject]@{
Name = $zone.ZoneName
Hostname = $info.Hostname
Type = $info.RecordType
Data = $recordData
Timestamp = $timestamp
TimeToLive = $timetolive
}
$Report.Add($ReportLine)
}
}
$Report | Export-Csv "C:tempAllDNSZonesRecords.csv" -NoTypeInformation -Encoding utf8すべての DNS レコードを CSV ファイルにエクスポートします。C:温度。 CSV ファイルは次のようになります。

それでおしまい!
結論
PowerShell を使用して DNS レコードを CSV にエクスポートする方法を学習しました。 DNS マネージャーを使用して DNS レコードをエクスポートする場合には制限があります。 PowerShell を使用すると、エクスポート結果を好みに合わせて調整できます。重要な変更を加える前に、DNS レコードのバックアップを作成しておくことは常に良いことです。 PowerShell スクリプトはニーズに対応します。
この記事は気に入りましたか? PowerShell スクリプトを使用した Active Directory の健全性チェックも気に入っていただけるでしょう。ぜひフォローしてこの記事をシェアしてください。













