ドメインが複数表示されている画像

Entra

GraphPowerShellから独自ドメインのDNSレコードを一括取得する

新規構築の場合は、複数のドメインを登録する必要がある場合がある。会社の規模が大きければ多いほど使用しているドメインの数が多くなる傾向にあるはず。Microsoft365管理センター等のGUIからの登録は手間なのでGraphPowershellから設定する場合のコード例を記載する。

検証環境について

動作確認した検証環境は以下の通り。

OS:Microsoft Windows 11 Enterprise
OSbuildバージョン:10.0.22621
PowerShellのバージョン:7.4.0

GraphPowershellのモジュール名とバージョン
Microsoft.Graph.Authentication 2.11.1
Microsoft.Graph.Identity.DirectoryManagement 2.11.1

サインインアカウントの権限はグローバル管理者。

使用するコマンド

Get-MgDomainVerificationDnsRecord

使用例

Get-MgDomainVerificationDnsRecord -DomainId "365ps.jp" | Format-List

取得できる情報例

Id                   : 00000000-000000000-0000-000000000000
IsOptional           : False
Label                : 365ps.jp
RecordType           : Txt
SupportedService     : Email
Ttl                  : 3600
AdditionalProperties : {[@odata.type, #microsoft.graph.domainDnsTxtRecord], [text, MS=ms00000000]}

Get-MgDomainServiceConfigurationRecord

使用例

Get-MgDomainServiceConfigurationRecord -DomainId "365ps.jp" | Format-List

取得できる情報例

Id                   : 00000000-000000000-0000-000000000000
IsOptional           : False
Label                : 365ps.jp
RecordType           : Mx
SupportedService     : Email
Ttl                  : 3600
AdditionalProperties : {[@odata.type, #microsoft.graph.domainDnsMxRecord], [mailExchange, *******.mail.protection.outl
                       ook.com], [preference, 0]}

New-MgDomain

使用例

New-MgDomain -BodyParameter @{id = "365ps.jp"}

複数のドメインのレコードをCSVファイルとして保存する

#Microsoft365上で使用したいドメインを定義する
$domainList = "365ps.jp","mail.365ps.jp"

#CSVの保存先 windowsOSの場合、デスクトップに保存する
$csvSavePath = "$env:USERPROFILE\Desktop"


#Microsoft365を登録、使用するうえで必要なDNSレコードを取得する関数
function Get-dnsRecord($domain){
    #設定するべきレコードを格納する変数
    $dnsRecordsList = @()
    
    #ドメイン所有権の確認に必要なレコードを取得する
    #TXTかMXどちらか一方のみ登録できればOK
    #今回はTXTレコードを取得する
    $dnsRecordsList += Get-MgDomainVerificationDnsRecord -DomainId $domain | `
        ?{$_.RecordType -eq "Txt"}

    #ExchangeOnlineとIntuneに関連するDNSレコードを取得する
    $dnsRecordsList += Get-MgDomainServiceConfigurationRecord -DomainId $domain | `
        ?{$_.SupportedService -eq "Email" -or $_.SupportedService -eq "Intune" }

    #取得したDNSレコードを戻り値として返す
    return $dnsRecordsList
}

#上記関数で取得した結果を必要な情報のみになるように加工する関数
function Proces-dnsRecord($beforeRecordsList){
    $recordValue = ""
    $recordsList = @()

    foreach($dnsRecord in $beforeRecordsList){
        if($dnsRecord.RecordType -eq "Txt"){
            $recordValue = $dnsRecord.AdditionalProperties.text
        }
        if($dnsRecord.RecordType -eq "Mx"){
            $recordValue =  $dnsRecord.AdditionalProperties.mailExchange
        }
        if($dnsRecord.RecordType -eq "CName"){
            $recordValue = $dnsRecord.AdditionalProperties.canonicalName
        }

        #データとして見やすくするためPSCustomObjectとして格納
        $recordsList += [PSCustomObject]@{
            RecordType = $dnsRecord.RecordType
            RecordValue = $recordValue
        }
    }

    #加工したデータを結果として戻す
    return $recordsList
}

#GraphPowerShellに接続する
Connect-MgGraph -Scopes "Domain.ReadWrite.All" -NoWelcome

#設定したいドメインの数だけ繰り返す
foreach($domain in $domainList){

    #新しいドメインを設定する
    New-MgDomain -BodyParameter @{id = $domain}

    $recordsList = Get-dnsRecord($domain)
    $result = Proces-dnsRecord($recordsList)

    #ドメイン内に含まれるドット(.)をアンダーバー(_)に置き換える
    $replaceDomain = $domain.replace(".","_")
    #実行日時を取得する
    $yyyyMMddFFFFF = Get-Date -Format "yyyyMMdd_FFFFF"
    #取得したDNSレコードをドメインごとにCSVファイルとして保存する
    $result | Export-Csv -Encoding UTF8 -NoTypeInformation `
    -Path "${csvSavePath}\${replaceDomain}_DnsRecord_${yyyyMMddFFFFF}.csv"
}

#GraphPowerShellから切断する
Disconnect-MgGraph

独自ドメインの検証成功後

オンプレミスのActive Directoryがある場合

以下公開情報元に同期できるよう設定すること。

ハイブリッド ID のドキュメント – Microsoft Entra ID | Microsoft Learn

問い合わせフォーム

リンク切れのご報告や、記載内容に不備がありましたら、お手数をおかけしますが
以下お問い合わせフォームからご報告をお願い致します。
コマンドの仕様確認やエラー内容の確認、対処方法については、ご契約されているMicrosoftかCSPへお問い合わせください。
※いただきました内容は確認させていただきますが、必ずしも回答をお約束するものではございません。

    GraphPowerShellからユーザーを一括作成する次のページ

    関連記事

    1. Entra

      GraphPowerShellを使用してアカウントの部署情報を一括更新する

      Microsoft365のアカウントのプロパティ情報を一括更…

    2. Entra

      GraphPowerShellを利用してMicrosoft365管理者アカウントを一括取得する

      GraphPowerShellを使用して管理アカウントを一括…

    3. Entra

      Microsoft365アカウントの認証方法登録情報を取得する

      多要素認証、セルフパスワードリセットに使用する認証方法の登録…

    4. Entra

      GraphPowerShellからユーザーを一括作成する

      Graph Powershellのコマンド、New-MgUserを使用…

    最近の記事

    PAGE TOP