管理者必見:デバイスをデバイス名からセキュリティグループへ一括登録するPowerShellスクリプト

Microsoft Entra IDのセキュリティグループにデバイスを手動で1台ずつ追加していると、時間も手間もかかり、ミスが生じやすくなります。

そこで本記事では、あらかじめ用意したCSVファイルをもとに、大量のデバイスをグループに一括登録する方法をご紹介します。

Microsoft Graph PowerShellを活用することで、一連の作業を自動化・効率化し、大幅に管理コストを削減できます。

CSVファイルの準備

ここでは、DeviceName という列名を使い、以下のような構造のCSVを用意します。Excelやメモ帳で UTF-8 形式で保存してください。

例: DevicesName.csv

CSVでは 1 行目が列名 "DeviceName"、2 行目以降に追加対象デバイスの表示名を記載します。

表示名(displayName)が Entra ID 上のデバイス名と完全に一致する必要がある点に注意してください。

スクリプト実行準備

  1. PowerShellを管理者権限で開きます
  2. Microsoft Graph PowerShell をインストールします
    Install-Module Microsoft.Graph
  3. Connect-MgGraphでMicrosoft Entraに接続します
    Connect-MgGraph -Scopes 'User.ReadWrite.All,Group.ReadWrite.All'

実行するPowerShellスクリプトの解説

以下のコードでは、CSVから読み取った "デバイス名(displayName)" と一致するデバイスを Get-MgDevice で検索し、一致したデバイスの Object ID をセキュリティグループに追加します。

# (A) CSVファイルのパス
$csvPath = "C:\DevicesName.csv"
 
# (B) 登録先のグループのObject ID
#    例: "11111111-2222-3333-4444-555555555555"
#    あらかじめ Get-MgGroup、Entara管理センター 等で取得しておく
$groupId = "<グループのObject ID>"
 
# (C) CSVを読み込む
$devices = Import-Csv -Path $csvPath
 
foreach ($device in $devices) {
    # (D) CSV上の 'DeviceName' 列から取り出した名前
    $deviceName = $device.DeviceName
 
    # (E) displayName が完全一致するデバイスを検索
    #     同名が複数ある可能性があるため、複数返る場合は要注意。
    $results = Get-MgDevice -Filter "displayName eq '$($deviceName)'"
 
    if ($results) {
        # 一意にヒットすると仮定して先頭要素を使用
        $targetDevice = $results
 
        # (F) 新しいデバイスメンバーを登録 (New-MgGroupMember)
        #     "https://graph.microsoft.com/v1.0/directoryObjects/<デバイスID>"
        #     を '@odata.id' として BodyParameter に指定
        New-MgGroupMember -GroupId $groupId -BodyParameter @{
            '@odata.id' = "https://graph.microsoft.com/v1.0/directoryObjects/$($targetDevice.Id)"
        }
 
        Write-Host "Added device: $($deviceName) / ObjectId: $($targetDevice.Id)"
    }
    else {
        # 該当デバイスが見つからない場合
        Write-Host "Device not found or no match: $($deviceName)"
    }
}

スクリプトのポイントです。

  • Import-Csv -Path $csvPath
    •  CSVファイルをオブジェクトとして読み込みます
  • $results = Get-MgDevice -Filter "displayName eq '...'"
    • 完全一致検索で対象デバイスを取得します
  • New-MgGroupMember の -BodyParameter に "@odata.id" を指定
  • Write-Host
    • 簡単なステータスを表示しておくとで、成功やエラーの確認が楽になります。

実行と確認

実行

スクリプトを保存し、PowerShell上で実行します。

「Added device: PC-001 / ObjectId: (GUID)」のような出力が表示されれば成功です。

確認

Entra ID ポータルにアクセスし、該当グループの「メンバー」に追加されたデバイスが含まれていることを確認します。

※ 既にメンバーの場合や同名が存在しない場合などは、エラーメッセージや "Device not found" が表示されることがあります。

最後に

本記事では、CSVに記載されたデバイス名(displayName)をキーとして、Microsoft Graph PowerShellを用いたセキュリティグループへの一括登録手順を紹介しました。

手動での追加に比べて、スクリプトを使った一括処理は管理の効率を大幅に高められます。

組織規模が大きく、多数のデバイスを取り扱う場合や、入社・退社など端末が頻繁に増減する環境では特に便利です。

ぜひ一括登録を取り入れて作業時間を削減しいていただければと思います。

執筆担当者プロフィール
笹内 友貴

笹内 友貴(日本ビジネスシステムズ株式会社)

西日本事業本部に所属。主にMicrosoft 365製品を扱っています。

担当記事一覧