PowerShell DNS CmdletsでDNSタスクを自動化する

DNSレコードは通常、DNSサーバーによって動的に管理されます。しかし、時々、さまざまな種類のDNSレコードを手動で作成、編集、または削除する必要がある場合があります。または、さまざまなDNSタスクを自動化スクリプトに追加する必要があるかもしれません。このような場合には、PowerShell DNSコマンドレットを使用することが適しています。

このブログ投稿には、TechSnipsの寄稿者であるDavid Lambによって作成された補足ビデオがあります。ご視聴いただくか、テキストをお読みいただくこともできます。

PowerShell DNSコマンドレットを使用してDNSレコードを表示する

単にPowerShell DNSコマンドレットGet-DnsServerResourceRecordを使用するだけで、指定したZoneNameパラメーターに対応するすべてのリソースレコードを表示することができます。

下記のように、これによりかなり長いレコードのリストが生成されます。

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad
Listing DNS records with PowerShell

この動作は、この特定のコマンドレットがグラフィカルなDNSコンソールよりも優れている点の一つを強調しています。この表示では、どのフォルダにあるかに関係なく、このゾーンのすべてのレコードが表示されます。グラフィカルコンソールでは、この情報を組み合わせるのにかなりの時間がかかるでしょう。

このリストを少し薄くしてください。同じコマンドレットを使用しますが、RRTypeパラメータを追加してAレコード(IPv4ホスト)を検索し、Time To Live(TTL)が15分以上のレコードをフィルタリングすると、管理可能なリストが表示されます。 Where-Objectコマンドレットを使用して、さまざまなDNSレコードのプロパティでフィルタリングできます。

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A | Where-Object TimeToLive -GE "00:15:00"
Finding DNS records with a TimeToLive greater than 15 minutes

さらに、異なるDNSゾーンや異なるDNSサーバーでレコードを検索することもできます。

以下の例では、DNSサーバーDC03上のcanada.corp.adゾーン内のAレコードを検索します。

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName canada.corp.ad -RRType A
Finding DNS A records

Aホストレコードの追加と削除

ホストレコードを追加するには、PowerShell DNSコマンドレットAdd-DnsServerResourceRecordAを使用する必要があります。以下の例では、ネットワークに追加する新しいプリンターのためのホストレコードを追加する必要があります。これはcorp.adゾーンにreddeerprint01という名前で追加され、IPアドレスは192.168.2.56です。

PS51> Add-DnsServerResourceRecordA -Name reddeerprint01 -ZoneName corp.ad -IPv4Address 192.168.2.56
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A
Creating a DNS record

もしもレコードを削除する必要がある場合、おそらくプリンターが廃止された場合、以下のコードを使用して、先ほど作成したホストレコードを削除できます。

PS51> Remove-DnsServerResourceRecord -ZoneName corp.ad -Name reddeerprint01 -RRType A

AAAホストレコードの追加と削除

IPv6ホストレコードを追加するのも同様に簡単です。ただし、これらのレコードはAAAAレコードとしてリストされるため、若干異なることに注意してください。PowerShell DNSコマンドレットAdd-DnsServerResourceRecordAAAAを使用しています。微妙な変更ですが、重要な変更です。

次のコマンドを使用して、corp.adゾーンに新しいITイントラネットサーバーのレコードをfc00:0128に追加し、作成されたことをすばやく確認してください。

PS51> Add-DnsServerResourceRecordAAAA -Name it-intranet -ZoneName corp.ad -IPv6Address "fc00::0128"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType AAAA
Creating an AAA host record

逆引きルックアップレコード(PTR)の追加

PowerShell DNSコマンドレットを使用して、PTRレコードを追加することもできます。逆引きルックアップレコードは、クライアントがDNSサーバーに対して指定したIPアドレスのホスト名をリクエストするためのものです。

PTRレコードの作成は比較的簡単なプロセスですが、レコードを追加する前に知っておく必要がある重要な情報があります。逆引きルックアップゾーンはデフォルトでは作成されません。レコードを追加する前に逆引きルックアップゾーンを設定する必要がありますが、幸いにもそれは比較的簡単です。

DNSゾーンの作成

PowerShell DNSコマンドレットAdd-DnsServerPrimaryZoneを使用して新しいDNSゾーンを作成します。この場合、逆引きルックアップゾーンを作成しているため、ネットワークIDを指定します。

この例では、レプリケーションスコープをADフォレスト全体に設定し、特定のDC03を優先DNSサーバーとして指定しています。

PS51> Add-DnsServerPrimaryZone -ComputerName DC03 -NetworkId "192.168.2.0/24" -ReplicationScope Forest
PS51> Get-DnsServerZone -ComputerName DC03
Creating a DNS primary zone

逆引きゾーンが設定されたので、CYQF-Printer-01.canada.corp.adという名前の新しいプリンタのPTRレコードを追加することができます。このレコードはcanada.corp.adゾーン用のものであり、DNSサーバーDC03をターゲットにする必要があります。

ゾーンが作成されたので、Add-DnsServerResourceRecordPtrコマンドを使用してPTRレコードを作成しましょう。このコマンドレットを使用する際には、いくつかの重要な点に注意する必要があります。

  • ネットワークIDを逆順に使用してゾーン名を指定する必要があります。そして、.in-addr.arpaを追加します。したがって、私たちの192.168.2.0/24のネットワークIDに対して、ゾーン名は2.168.192.in-addr.arpaです。
  • NameパラメータはIPアドレスのホスト部分です。192.168.2.56のプリンタの場合、Name56です。

これらの情報が揃ったら、PTRレコードを作成するために必要なコードは比較的簡単ですが、少し長いです:

PS51> Add-DnsServerResourceRecordPtr `
    -Name "56" `
    -PtrDomainName "CYQF-Printer-01.canada.corp.ad" `
    -ZoneName "2.168.192.in-addr.arpa" `
    -computerName DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName "2.168.192.in-addr.arpa"
Creating a PTR record

別名レコード(CNAME)の追加

このチュートリアルを完了するために、Add-DnsServerResourceRecordCNameコマンドレットを使用してホストの別名レコードまたはCNAMEレコードを作成します。

これらのレコードは、ゾーン内の既存のホストレコードの別名を指定することができます。これは、たとえば、財務ユーザーにWeb対応の財務アプリのアドレスを提供したい場合に特に便利です。

financeというエイリアスを作成し、それをwebserver webapp25.corp.adに向けます。アプリケーションが新しいホスト名を持つ新しいwebserverに移行されたら、CNAMEレコードを変更してfinanceを新しいホストに向けます。これにより、ユーザーはブックマークを更新する必要がありません。アドレスfinance.corp.adを使用してアプリケーションにアクセスし続けることができます。

PS51> Add-DnsServerResourceRecordCName -ZoneName corp.ad -HostNameAlias "webapp25.corp.ad" -Name "finance"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType CName
Creating a CNAME record

DNSについてさらに詳しく知りたい場合は、ここで他のDNSの記事をすべてチェックしてください

概要

PowerShellを使用したDNSレコードの使用に関するチュートリアルは以上です。ここで蓄積した知識を活用することで、大量のDNSレコードを対話的に管理したり、自動化したりすることができるでしょう!

Source:
https://adamtheautomator.com/powershell-dns/