Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

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で短時間かつ確実に処理できるようになります。

  1. WhatsAppグループの作成・管理方法を徹底解説!初心者向け完全ガイド

    WhatsAppは毎日7億人以上の人々がメッセージのやり取りやインターネット通話、ビデオ通話に利用している世界有数のコミュニケーションアプリです。あなたもその一人で、すでにいくつかのWhatsAppグループに参加しているかもしれません。この記事では、WhatsAppグループの作成方法から効率的な管理方法まで、役立つ情報をわかりやすく解説します。 WhatsAppグループを作成するために必要なもの WhatsAppグループを作成するには、まずAndroid端末、iPhone、Mac、WindowsのいずれかのデバイスにWhatsAppをインストールしておく必要があります。 また、以下の項目も事

  2. 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の両方でスクリプトを作成・実行できるようになり、作業効