PowerShellでDNSゾーンとレコードを作成・管理する方法【DNSServerモジュール活用ガイド】
Windows管理者は、従来からのDnscmd CLIツール、またはPowerShell用のDNSServerモジュールを使ってDNSゾーンやレコードを管理できます。本記事では、PowerShellを活用したDNSレコード・ゾーンの一括作成、変更、削除といった基本操作について、具体例を交えながらわかりやすく解説します。
DNSServer PowerShellモジュールとは
DNSServerモジュールはRSAT(Remote Server Administration Tools)の一部として提供されています。Windows 10の場合はRSATを別途インストールする必要があり、Windows ServerではサーバーマネージャーのGUIから「役割管理ツール → DNSサーバー ツール」を有効化することで利用できるようになります。
まず、DNSServer PowerShellモジュールがコンピューターにインストールされているかどうかを確認しましょう。
Get-Module DNSServer –ListAvailable
モジュールに含まれるコマンドの一覧を表示するには、次のコマンドを実行します(Windows Server 2016向けのモジュールには134個のコマンドレットが含まれています)。
Get-Module DNSServer
PowerShellによるDNSゾーンの管理
サーバー上のDNSゾーン一覧を表示します(ここではドメインコントローラーを対象としています)。
Get-DnsServerZone –ComputerName dc01
woshub.comという新しいプライマリDNSゾーンを追加するには、次のコマンドを実行します。
Add-DnsServerPrimaryZone -Name woshub.com -ReplicationScope "Forest" –PassThru
実行結果を見ると、Active Directoryに統合されたプライマリDNSゾーンが作成されていることがわかります(isDsIntegrated=True)。
逆引き参照ゾーンを作成することもできます。
Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ReplicationScope Domain
新しいゾーンをドメイン内の他のドメインコントローラー(DC)と同期するには、次のコマンドを使用します。
Sync-DnsServerZone –passthru
新しく作成したDNSゾーン内のレコード一覧を表示してみましょう(まだ何も登録されていないため空です)。
Get-DnsServerResourceRecord -ComputerName dc01 -ZoneName contoso.local
DNSゾーンを削除する場合は、次のコマンドを使用します。
Remove-DnsServerZone -Name woshub.com -ComputerName dc01
なお、ゾーンを削除すると、そのゾーン内に存在するすべてのDNSレコードも一緒に削除される点に注意してください。
DNSServerモジュールによるDNSレコードの管理
指定したDNSゾーンにホストの新しいAレコードを作成するには、次のコマンドを使用します。
Add-DnsServerResourceRecordA -Name ber-rds1 -IPv4Address 192.168.100.33 -ZoneName woshub.com -TimeToLive 01:00:00
逆引き参照ゾーンにPTRレコードを追加するには、上記のコマンドに–CreatePtrパラメータを追加するか、Add-DNSServerResourceRecordPTRコマンドレットを使って手動で作成します。
Add-DNSServerResourceRecordPTR -ZoneName 100.168.192.in-addr.arpa -Name 33 -PTRDomainName ber-rds1.woshub.com
特定のAレコードに対してエイリアス(CNAME)を追加するには、次のコマンドを実行します。
Add-DnsServerResourceRecordCName -ZoneName woshub.com -Name Ber-RDSFarm -HostNameAlias ber-rds1.woshub.com
AレコードのIPアドレスを変更(更新)する場合は少し手順が複雑です。DNSレコードのIPアドレスは直接書き換えることができないため、次のような方法を使います。
$NewADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01
$OldADNS = get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com -ComputerName dc01
続いて、$NewADNSオブジェクトのIPv4Addressプロパティを新しいIPアドレスに変更します。
$NewADNS.RecordData.IPv4Address = [System.Net.IPAddress]::parse('192.168.100.133')
Set-DnsServerResourceRecordコマンドレットを使って、AレコードのIPアドレスを更新します。
Set-DnsServerResourceRecord -NewInputObject $NewADNS -OldInputObject $OldADNS -ZoneName woshub.com -ComputerName dc01
AレコードのIPアドレスが正しく変更されたことを確認しましょう。
Get-DnsServerResourceRecord -Name ber-rds1 -ZoneName woshub.com
–RRTypeパラメータを使用すると、同じ種類のDNSレコードだけを一覧表示できます。たとえば、指定したDNSゾーン内のCNAMEレコードの一覧を表示するには次のようにします。
Get-DnsServerResourceRecord -ComputerName DC01 -ZoneName woshub.com -RRType CNAME
また、Where-Objectを組み合わせれば、任意のDNSレコード属性でフィルタリングすることも可能です。たとえば、ホスト名に「rds」という文字列を含むAレコードの一覧を表示するには、次のように実行します。
Get-DnsServerResourceRecord -ZoneName woshub.com -RRType A | Where-Object HostName -like "*rds*"
DNSレコードを削除するには、Remove-DnsServerResourceRecordコマンドレットを使用します。
CNAMEレコードを削除する例:
Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType CName -Name Ber-RDSFarm
Aレコードを削除する例:
Remove-DnsServerResourceRecord -ZoneName woshub.local -RRType A -Name ber-rds1 –Force
逆引き参照ゾーンからPTRレコードを削除する例:
Remove-DnsServerResourceRecord -ZoneName "100.168.192.in-addr.arpa" -RRType "PTR" -Name "33"
.CSVファイルから複数のAレコードとPTRレコードを一括作成する方法
特定のDNS前方参照ゾーンに複数のAレコードを一度に作成したいケースはよくあります。Add-DnsServerResourceRecordAコマンドレットで1件ずつ追加することもできますが、CSVファイルから一括登録する方がはるかに効率的です。
まず、DNSに登録したいホスト名とIPアドレスを記載したテキストファイルNewDnsRecords.txtを作成します。ファイルの形式は以下のとおりです。
HostName, IPAddress
TXT/CSVファイルの内容に基づいてwoshub.comゾーンにAレコードを作成するPowerShellスクリプトは次のとおりです。
Import-CSV "C:\PS\NewDnsRecords.txt" | %{
Add-DNSServerResourceRecordA -ZoneName woshub.com -Name $_."HostName" -IPv4Address $_."IPAddress"
}
同時に逆引き参照ゾーンにもPTRレコードを登録したい場合は、Add-DNSServerResourceRecordAコマンドに–CreatePtrパラメータを追加するだけで対応できます。
処理完了後、DNSマネージャーコンソール(dnsmgmt.msc)またはGet-DnsServerResourceRecord -ZoneName woshub.localコマンドで、すべてのDNSレコードが正常に作成されたことを確認してください。
逆引き参照ゾーンにPTRレコードを一括で追加したい場合は、次の構造を持つテキストファイルまたはCSVファイルを用意します。
octet,hostName,zoneName 102,ber-rds2.woshub.com,100.168.192.in-addr.arpa 103,ber-rds3.woshub.com,100.168.192.in-addr.arpa 104,ber-rds4.woshub.com,100.168.192.in-addr.arpa 105,ber-rds5.woshub.com,100.168.192.in-addr.arpa
そして、次のスクリプトを実行します。
Import-CSV "C:\PS\NewDnsPTRRecords.txt" | %{
Add-DNSServerResourceRecordPTR -ZoneName $_."zoneName" -Name $_."octet" -PTRDomainName $_."hostName"
}
最後に、PTRレコードがDNS逆引き参照ゾーンに正しく登録されていることを確認しましょう。これで、大量のDNSレコード作業もPowerShellで短時間かつ確実に処理できるようになります。
-
WhatsAppグループの作成・管理方法を徹底解説!初心者向け完全ガイド
WhatsAppは毎日7億人以上の人々がメッセージのやり取りやインターネット通話、ビデオ通話に利用している世界有数のコミュニケーションアプリです。あなたもその一人で、すでにいくつかのWhatsAppグループに参加しているかもしれません。この記事では、WhatsAppグループの作成方法から効率的な管理方法まで、役立つ情報をわかりやすく解説します。 WhatsAppグループを作成するために必要なもの WhatsAppグループを作成するには、まずAndroid端末、iPhone、Mac、WindowsのいずれかのデバイスにWhatsAppをインストールしておく必要があります。 また、以下の項目も事
-
Windows 10/11でVisual Studio Codeを使ってPowerShellスクリプトを作成・実行する方法
Windows 10やWindows 11でも、PowerShellスクリプトを作成できることをご存じでしょうか?WindowsにPowerShellをインストールしたら、次はPCで何ができるのか知りたくなるはずです。このガイドでは、Visual Studio Codeを使ってシンプルなスクリプトファイルを作成し、Windows 10およびWindows 11のPowerShellで実行する方法を解説します。 まずは基本的なPowerShellスクリプトの作り方を覚えましょう。これをマスターすれば、Windows 10とWindows 11の両方でスクリプトを作成・実行できるようになり、作業効