Share via


如何管理使用 PowerShell 的 DNS 區域

本文說明如何使用 Azure PowerShell 管理 DNS 區域。 您也可以使用跨平台 Azure CLI 或 Azure 入口網站來管理 DNS 區域。

本指南特別說明公用 DNS 區域。 如需在 Azure DNS 中使用 Azure PowerShell 管理私人區域的資訊,請參閱利用 PowerShell 開始使用 Azure DNS 私人區域

DNS 區域用於裝載特定網域的 DNS 記錄。 若要開始將網域裝載到 Azure DNS 中,您必須建立該網域名稱的 DNS 區域。 接著在此 DNS 區域內,建立網域的每筆 DNS 記錄。

例如,網域 'contoso.com' 可能包含數筆 DNS 記錄,例如 'mail.contoso.com' (用於郵件伺服器) 和 'www.contoso.com' (用於網站)。

在 Azure DNS 中建立 DNS 區域時︰

  • 區域的名稱在資源群組內必須是唯一的,且區域必須尚未存在。 否則作業會失敗。
  • 不同的資源群組或不同的 Azure 訂用帳戶中,可重複使用相同的區域名稱。
  • 多個區域共用相同的名稱時,系統就會將不同的名稱伺服器位址,指派給每個執行個體。 只可以向網域名稱註冊機構登記一組位址。

注意

您不必擁有網域名稱,也能在 Azure DNS 中以該網域名稱建立 DNS 區域。 不過,的確需要擁有網域,才能將 Azure DNS 名稱伺服器,設定為網域名稱的正確名稱伺服器,供網域名稱註冊機構使用。

如需詳細資訊,請參閱將網域委派給 Azure DNS

針對 Azure DNS 設定 Azure PowerShell SDK

開始之前

重要

使用 PowerShell 中的 Azure 功能需要安裝 AzureRM 模組。 這是一個較舊的模組,僅適用於 Windows PowerShell 5.1,而且不會再取得新的功能。 若在相同版本的 PowerShell 上安裝 AzAzureRM 模組,這兩個模組不會相容。 如果您需要這兩個版本:

  1. 從 PowerShell 5.1 工作階段中解除安裝 Az 模組
  2. 從 PowerShell 5.1 工作階段中安裝 AzureRM 模組
  3. 下載並安裝 PowerShell Core 6.x 或更新版本
  4. 在 PowerShell Core 工作階段中安裝 Az 模組

在開始設定之前,請確認您具備下列項目。

登入您的 Azure 帳戶

開啟 PowerShell 主控台並連接到您的帳戶。 如需詳細資訊,請參閱使用 Azure PowerShell 登入 \(英文\)。

Connect-AzAccount

選取訂用帳戶

檢查帳戶的訂用帳戶。

Get-AzSubscription

選擇其中一個要使用的 Azure 訂用帳戶。

Select-AzSubscription -SubscriptionName "your_subscription_name"

建立資源群組

Azure 資源管理員需要所有的資源群組指定一個位置。 此位置用來作為該資源群組中資源的預設位置。 然而,因為所有 DNS 資源是全球性,而非區域性,資源群組位置的選擇不會對 Azure DNS 造成影響。

如果您使用現有的資源群組,則可略過此步驟。

New-AzResourceGroup -Name MyDNSResourceGroup -location "West US"

建立 DNS 區域

使用 New-AzDnsZone Cmdlet 建立 DNS 區域。

下列範例會在稱為 MyDNSResourceGroup 的資源群組中建立稱為 contoso.com 的 DNS 區域:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

下列範例示範如何使用 project = demoenv = test 這兩個 Azure Resource Manager 標籤,建立 DNS 區域:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

取得 DNS 區域

若要擷取 DNS 區域,請使用 Get-AzDnsZone Cmdlet。 此作業會傳回對應至 Azure DNS 中現有區域的 DNS 區域物件。 這個物件包含區域的相關資料 (例如記錄集的數目),但不包含記錄集本身 (請參閱 Get-AzDnsRecordSet)。

Get-AzDnsZone -Name contoso.com –ResourceGroupName MyDNSResourceGroup

Name                  : contoso.com
ResourceGroupName     : myresourcegroup
Etag                  : 00000003-0000-0000-8ec2-f4879750d201
Tags                  : {project, env}
NameServers           : {ns1-01.azure-dns.com., ns2-01.azure-dns.net., ns3-01.azure-dns.org.,
                        ns4-01.azure-dns.info.}
NumberOfRecordSets    : 2
MaxNumberOfRecordSets : 5000

列出 DNS 區域

您可以從 Get-AzDnsZone 中省略區域名稱,以列舉資源群組中的所有區域: 此作業會傳回一系列的區域物件。

$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList

您可以從 Get-AzDnsZone 中省略區域名稱和資源群組名稱,以列舉 Azure 訂用帳戶中的所有區域。

$zoneList = Get-AzDnsZone
$zoneList

更新 DNS 區域

您可以使用 Set-AzDnsZone變更 DNS 區域資源。 這個 Cmdlet 不會更新區域內的任何 DNS 記錄集 (請參閱如何管理 DNS 記錄)。 它只用來更新區域資源本身的屬性。 這些可寫入區域屬性目前僅限於區域資源的Azure Resource Manager「標籤」

請使用下列兩種方法之一來更新 DNS 區域:

使用區域名稱和資源群組來指定區域

這種方法會以指定的值取代現有的區域標籤。

Set-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

使用 $zone 物件來指定區域

此方法會擷取現有的區域物件、修改標籤,然後認可變更。 如此一來,就可以保留現有的標籤。

# Get the zone object
$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

# Remove an existing tag
$zone.Tags.Remove("project")

# Add a new tag
$zone.Tags.Add("status","approved")

# Commit changes
Set-AzDnsZone -Zone $zone

當您使用 Set-AzDnsZone 搭配 $zone 物件時,會使用 Etag 檢查,以確保不會覆寫並行變更。 您可以使用選擇性的 -Overwrite 參數來停用這些檢查。

刪除 DNS 區域

您可以使用 Remove-AzDnsZone Cmdlet 刪除 DNS 區域。

注意

刪除 DNS 區域也會刪除該區域內的所有 DNS 記錄。 此作業無法復原。 如果 DNS 區域正在使用中,當該區域遭到刪除時,使用該區域的服務將會失敗。

若要防止區域意外遭到刪除,請參閱如何保護 DNS 區域和記錄

請使用下列兩種方法之一來刪除 DNS 區域:

使用區域名稱和資源群組名稱來指定區域

Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

使用 $zone 物件來指定區域

您可以使用 Get-AzDnsZone 所傳回的 $zone 物件,指定要刪除的區域。

$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Remove-AzDnsZone -Zone $zone

區域物件也可以經由管道輸送,而不是當做參數傳遞:

Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup | Remove-AzDnsZone

如同 Set-AzDnsZone 一樣,使用 $zone 物件指定區域可啟用 Etag 檢查,以確保不會刪除並行的變更。 使用 -Overwrite 參數來停用這些檢查。

確認提示

New-AzDnsZoneSet-AzDnsZoneRemove-AzDnsZone cmdlets 皆支援確認提示。

如果 $ConfirmPreference PowerShell 喜好設定變數的值為 Medium 或更低,則 New-AzDnsZoneSet-AzDnsZone 兩者都會顯示確認提示。 由於刪除 DNS 區域可能造成不必要的狀況,所以如果 $ConfirmPreference PowerShell 變數的值不是 NoneRemove-AzDnsZone Cmdlet 就會顯示確認提示。

由於 $ConfirmPreference 的預設值是 High,預設只有 Remove-AzDnsZone 會顯示確認提示。

您可以使用 -Confirm 參數覆寫目前 $ConfirmPreference 設定。 如果您指定 -Confirm-Confirm:$True,此 cmdlet 在執行前會提示您進行確認。 如果指定 -Confirm:$False,此 Cmdlet 不會提示您進行確認。

如需 -Confirm$ConfirmPreference 的詳細資訊,請參閱有關喜好設定變數

下一步

了解如何在 DNS 區域中管理記錄集和記錄
了解如何將您的網域委派給 Azure DNS
檢閱 Azure DNS PowerShell 參考文件