使用 PowerShell DNS Cmdlets自動化 DNS 任務

DNS 記錄通常由您的 DNS 伺服器動態管理。然而,有時候您可能需要手動創建、編輯或刪除各種類型的 DNS 記錄,或者將各種 DNS 任務添加到自動化腳本中。在這種情況下,使用 PowerShell DNS cmdlets 是一種不錯的選擇。

這篇博文有一個由 TechSnips 貢獻者 David Lamb 創建的相應視頻。隨意觀看,或者如果您更喜歡文字,繼續閱讀!

使用 PowerShell DNS Cmdlets 查看 DNS 記錄

您可以使用 PowerShell DNS cmdlet Get-DnsServerResourceRecord 簡單地查看特定 DNS 區域 的所有資源記錄。使用此 cmdlet,您可以指定 ZoneName 參數,列出該區域中的所有 DNS 記錄。

如下所示,這將生成一個相當冗長的記錄清單。

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

這種行為凸顯了這個特定 cmdlet 相對於圖形 DNS 控制台的優勢。該視圖會為您提供此區域的所有記錄,而不管它們位於哪個文件夾中。在圖形控制台中,需要花費相當長的時間才能將這些信息組合起來。

現在稍微縮小這個清單。使用相同的 cmdlet,但添加 RRType 參數來搜索 A 記錄(IPv4 主機),並過濾 TTL(生存時間)大於 15 分鐘的記錄,這樣我們可以得到一個更易管理的清單。您可以使用 Where-Object cmdlet 來過濾許多不同的 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

添加和刪除主機記錄

要添加主機記錄,您需要使用 PowerShell DNS cmdlet 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

添加和刪除 AAAA 主機記錄

添加IPv6主机记录同样简单。当然,这些记录略有不同,因为它们被列为AAAA记录。您可能会注意到,我们现在使用的是PowerShell DNS cmdlet Add-DnsServerResourceRecordAAAA。这是一个微小的变化,但非常重要。

corp.ad区域为新的IT内部网络服务器添加一条记录,IP地址为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 cmdlets,您还可以添加PTR记录。反向查找记录允许客户端查询DNS服务器以请求提供的IP地址的主机名。

创建PTR记录相对简单,但在开始添加PTR记录之前,您需要知道一个重要的信息。反向查找区域不会默认创建。您需要在添加记录之前设置好反向查找区域。幸运的是,这相对容易做到。

创建DNS区域

使用PowerShell DNS cmdlet Add-DnsServerPrimaryZone创建一个新的DNS区域。在这个示例中,由于您正在创建一个反向查找区域,因此为其提供网络ID。

在这个示例中,我还选择将复制范围设置为整个AD域,我特别将首选DNS服务器定为DC03

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記錄,其IP地址為192.168.2.56。由於此記錄是用於canada.corp.ad區域,因此您將針對DNS服務器DC03進行定位。

現在區域已經創建,讓我們使用Add-DnsServerResourceRecordPtr命令創建PTR記錄。在使用此cmdlet時,有幾點需要注意。

  • 您需要使用網絡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。一旦应用程序迁移到具有新主机名的新web服务器,您将更改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/