PowerShellからAzure DNSのレコードを操作

皆さんこんにちは。国井です。

マイクロソフトさんからMicrosoft MVPという賞を2006年からいただいておりましたが、
今年もいただくことができました。これで12回目なのですが、この12年の間に周りにいるMVPさんの顔ぶれも結構変わった気がしますし、同じことをずっと続けていくって、案外大変なことなんだなって思います。
私の場合はどうかって?自分の会社で好き勝手にやっているので、このブログと共に、この命ある限り続けますよ!

今日はAzure DNSレコードの操作をPowerShellから行うという、備忘録な感じの話です。
Azure ADやOffice365を検証環境で使っていると、DNSレコードを登録する機会というのは少なからず出てくると思います。ADFSの検証環境を何度も作ってしまうような強者であれば、お名前ドットコムなどで取得した独自ドメインをお持ちで、なおかつDNSにはAzure DNSを使うという人もいるでしょう。そんなときに覚えておきたいのが、Azure DNSをPowerShellから一括で登録・削除する方法。

以下に記しておきますので、ご入用の際はコピペして使ってください。
言うまでもないかもしれませんが、AzureをPowerShellから操作するときは、
Azure PowerShellを事前にインストールしておくこと、
Login-AzureRMAccount
Select-AzureRMSubscription -SubscriptionID <サブスクリプションID番号>
のコマンドレットを実行しておくことを忘れないでください。

Azure DNSレコードの登録

ドメイン確認用のTXTレコードを登録する場合だったら、このように実行します。

$rs = Get-AzureRmDnsRecordSet -name “ドメイン名(sub.adfs.jpだったら、subの部分を指定)” -RecordType TXT -ZoneName “ゾーン名(例:sub.adfs.jpだったら、adfs.jpの部分を指定)” -ResourceGroupName “リソースグループ名”
$rs.Records[0].Value = “MS=msで始まるレコード”
Set-AzureRmDnsRecordSet -RecordSet $rs

また、Office365用のレコードを登録する場合はこちら。

#各種情報の設定
$recordname=”ドメイン名(sub.adfs.jpだったら、subの部分を指定)”
$domainname=”ゾーン名(例:sub.adfs.jpだったら、adfs.jpの部分を指定)”
$MXdomainname=”ゾーン名を-で区切って表記 (例:adfs.jpだったら、-adfs-jpと表記)”
$IP=”WAPのIPアドレス”
$RG=”リソースグループ名”

#Aレコードの登録
$rs = New-AzureRmDnsRecordSet -Name $recordname -RecordType A -Ttl 60 -ZoneName $domainname -ResourceGroupName $RG
Add-AzureRmDnsRecordConfig -RecordSet $rs -Ipv4Address $IP
Set-AzureRmDnsRecordSet -RecordSet $rs

#MXレコードの登録
$ExchangeOnlineName=$recordname + $MXdomainname + “.mail.protection.outlook.com”
$rs = New-AzureRmDnsRecordSet -Name $recordname -RecordType MX -Ttl 60 -ZoneName $domainname -ResourceGroupName $RG
Add-AzureRmDnsRecordConfig -RecordSet $rs -Exchange $ExchangeOnlineName -Preference 5
Set-AzureRmDnsRecordSet -RecordSet $rs

#TXTレコードの登録
#ドメイン登録用レコードは使い終わった後に削除している前提です
$rs = Get-AzureRmDnsRecordSet -name $recordname -RecordType TXT -ZoneName $domainname -ResourceGroupName $RG
$rs.Records[0].Value = “v=spf1 include:spf.protection.outlook.com -all”
Set-AzureRmDnsRecordSet -RecordSet $rs

#CNAMEレコードの登録
$ASName=”autodiscover.” + $recordname
$SIPName=”sip.” + $recordname
$LyncName=”lyncdiscover.” + $recordname
$MSOIDName=”msoid.” + $recordname
$rs = New-AzureRmDnsRecordSet -Name $ASName -RecordType CNAME -Ttl 60 -ZoneName $domainname -ResourceGroupName $RG
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname “autodiscover.outlook.com”
Set-AzureRmDnsRecordSet -RecordSet $rs
$rs = New-AzureRmDnsRecordSet -Name $SIPName -RecordType CNAME -Ttl 60 -ZoneName $domainname -ResourceGroupName $RG
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname “sipdir.online.lync.com”
Set-AzureRmDnsRecordSet -RecordSet $rs
$rs = New-AzureRmDnsRecordSet -Name $LyncName -RecordType CNAME -Ttl 60 -ZoneName $domainname -ResourceGroupName $RG
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname “webdir.online.lync.com”
Set-AzureRmDnsRecordSet -RecordSet $rs
$rs = New-AzureRmDnsRecordSet -Name $MSOIDName -RecordType CNAME -Ttl 60 -ZoneName $domainname -ResourceGroupName $RG
Add-AzureRmDnsRecordConfig -RecordSet $rs -Cname “clientconfig.microsoftonline-p.net”
Set-AzureRmDnsRecordSet -RecordSet $rs

#SRVレコードの登録
$SIPTLSName=”_sip._tls.” + $recordname
$SIPFedName=”_sipfederationtls._tcp.” + $recordname
$rs = New-AzureRmDnsRecordSet -Name $SIPTLSName -RecordType SRV -Ttl 60 -ZoneName $domainname -ResourceGroupName $RG
Add-AzureRmDnsRecordConfig -RecordSet $rs –Priority 1 –Weight 100 –Port 443 –Target “sipdir.online.lync.com”
Set-AzureRmDnsRecordSet -RecordSet $rs
$rs = New-AzureRmDnsRecordSet -Name $SIPFedName -RecordType SRV -Ttl 60 -ZoneName $domainname -ResourceGroupName $RG
Add-AzureRmDnsRecordConfig -RecordSet $rs –Priority 1 –Weight 100 –Port 5061 –Target “sipfed.online.lync.com”
Set-AzureRmDnsRecordSet -RecordSet $rs

Azure DNSレコードの削除

(ドメイン確認用の)TXTレコードを削除する場合だったら、このように実行します。

$dns=Get-AzureRmDnsRecordSet -RecordType TXT -ZoneName “ゾーン名(例:sub.adfs.jpだったら、adfs.jpの部分を指定)” -ResourceGroupName “リソースグループ名”
$dns | Where-Object {$_.Name -match “ドメイン名(sub.adfs.jpだったら、subの部分を指定)”} | Remove-AzureRmDnsRecordSet -Force

以上です。他のサイトでも見かけることができるような内容だと思いますが、必要であれば、使ってみてください。