次の方法で共有


Microsoft Entra ID でグループ メンバーを一括追加する

コンマ区切り値 (CSV) ファイルを使用して、Microsoft Entra ID のポータルにグループ メンバーを一括インポートすることで、複数のメンバーをグループに追加できます。

CSV テンプレートについて

一括アップロード CSV テンプレートをダウンロードして入力し、Microsoft Entra グループ メンバーを正常に一括追加します。 CSV テンプレートは、次の例のようになります。

アップロード用のスプレッドシートと、各行および列の目的と値を説明する吹き出しを示すスクリーンショット。

CSV テンプレートの構造

ダウンロードされた CSV テンプレートの行は次のとおりです。

  • バージョン番号: バージョン番号を含む最初の行は、アップロード CSV に含める必要があります。
  • 列見出し:列見出しの形式は、<項目名> [PropertyName] <Required または空白> です。 たとえば Member object ID or user principal name [memberObjectIdOrUpn] Required です。 テンプレートの古いバージョンの中には、微妙に異なるものもあります。 グループ メンバーシップの変更については、メンバー オブジェクト ID またはユーザー プリンシパル名を選択できます。
  • 例の行: テンプレートには、各列の許容値の例の行が含まれています。 サンプル行を削除し、独自のエントリに置き換える必要があります。

その他のガイダンス

  • アップロード テンプレートの最初の 2 行は削除または変更しないでください。削除または変更しないと、アップロードを処理できません。
  • 必須の列が最初に示されています。
  • テンプレートに新しい列を追加することはお勧めしません。 その他の列を追加しても無視され、処理されません。
  • できるだけ頻繁に最新バーションの CSV テンプレートをダウンロードすることをお勧めします。
  • ファイルを正常にアップロードするには、少なくとも 2 人のユーザーの UPN またはオブジェクト ID を追加します。

グループ メンバーを一括インポートする

ヒント

この記事の手順は、開始するポータルに応じて若干異なる場合があります。

  1. グループ管理者以上の権限で Microsoft Entra 管理センターにサインインします。

  2. [Microsoft Entra ID] を選びます。

    Note

    グループの所有者も、所有しているグループのメンバーを一括インポートできます。

  3. [グループ]>[すべてのグループ] の順に選択します。

  4. メンバーを追加するグループを開き、 [メンバー] を選択します。

  5. [メンバー] ページで、[一括操作] を選択し、[メンバーのインポート] を選択します。

  6. [グループ メンバーの一括インポート] ページで、 [ダウンロード] を選択して、必要なグループ メンバーのプロパティを含む CSV ファイル テンプレートを取得します。

    [メンバーのインポート] コマンドがグループの [プロファイル] ページにあることを示すスクリーンショット。

  7. CSV ファイルを開き、グループにインポートするグループ メンバーごとに行を追加します。 必要な値は、メンバー オブジェクト IDまたはユーザー プリンシパル名です。 そのうえでファイルを保存します。

    CSV ファイルにインポートするメンバーの名前と ID が含まれることを示すスクリーンショット。

  8. [グループ メンバーの一括インポート] ページの [CSV ファイルをアップロード] で、そのファイルを参照します。 ファイルを選択すると、CSV ファイルの検証が開始されます。

  9. ファイルの内容が検証されると、一括インポート ページに "ファイルが正常にアップロードされました" と表示されます。 エラーが存在する場合は、ジョブを送信する前にそれらを修正する必要があります。

  10. ファイルが検証に合格したら、[送信] を選択して、グループ メンバーをグループにインポートする一括操作を開始してください。

  11. インポート操作が完了すると、一括操作が成功したことを示す通知が表示されます。

エラーが発生する場合は、[一括操作の結果] ページで結果ファイルをダウンロードして表示できます。 このファイルには、各エラーの理由が含まれています。 ファイルの送信は、指定されたテンプレートと一致し、正確な列名が含まれている必要があります。 一括操作の制限の詳細については、「一括インポート サービスの制限」を参照してください。

インポートの状態を確認する

保留中のすべての一括リクエストのステータスは、「一括操作の結果」ページで確認できます。

[一括操作の結果] ページの [チェックの状態] オプションを示すスクリーンショット。

一括操作に含まれる各行の項目の詳細については、 [成功数][失敗数][要求数合計] の各列の値を選択してください。 障害が発生した場合は、障害の理由がリストされます。

一括インポート サービスの制限

各一括操作アクティビティを実行できる時間は最大 1 時間であることに注意する必要があります。

非常に大規模なテナントでは、Microsoft Entra 管理ポータルでの一括操作はタイムアウトになり、失敗する可能性があります。 この制限は、スケーリングの制限が原因である既知の問題です。 Microsoft のエンジニアリング チームは、この制限を最終的に解決する新しいサービスに取り組んでいます。

Note

インポートや作成などの一括操作を実行するときに、一括操作が 1 時間以内に完了しない場合、問題が発生する可能性があります。 この問題を回避するには、バッチごとに処理されるレコードの数を分割することをお勧めします。 たとえば、エクスポートの開始前に、グループの種類またはユーザー名でフィルター処理して結果セットを制限し、結果のサイズを小さくすることができます。 フィルターを絞り込むと、実質的には一括操作によって返されるデータを制限することになります。

この問題のもう 1 つの回避策は、PowerShell を使用して Microsoft Graph API を直接呼び出す方法です。 ユーザーとグループの一括ダウンロードに失敗した場合は、PowerShell コマンドレットの GET-MgGroup -AllGET-MgUser -All を使用することをお勧めします。

以下の PowerShell コード例は、次のエンティティに関連する一括操作のためのものです。

ユーザー

すべてのユーザーを一括ダウンロードする

# Import the Microsoft Graph module 
Import-Module Microsoft.Graph 

# Authenticate to Microsoft Graph (you may need to provide your credentials) 
Connect-MgGraph -Scopes "User.Read.All" 

# Get all users using Get-MgUser 
$users = Get-MgUser -All -ConsistencyLevel eventual -Property Id, DisplayName, UserPrincipalName,UserType,OnPremisesSyncEnabled,CompanyName,CreationType 

# Specify the output CSV file path 
$outputCsvPath = "C:\\Users\\YourUsername\\Documents\\Users.csv"  

# Create a custom object to store user data 
$userData = @() 

# Loop through each user and collect relevant data 
foreach ($user in $users) { 
    $userObject = [PSCustomObject]@{ 
        Id = $user.Id 
        DisplayName = $user.DisplayName 
        UserPrincipalName = $user.UserPrincipalName 
        UserType = $user.UserType 
        OnPremisesSyncEnabled = $user.OnPremisesSyncEnabled 
        CompanyName = $user.CompanyName 
        CreationType = $user.CreationType 
    } 
    $userData += $userObject 
} 

# Export user data to a CSV file 
$userData | Export-Csv -Path $outputCsvPath -NoTypeInformation 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

Write-Host "User data exported to $outputCsvPath" 

ユーザーの一括作成

# Import the Microsoft Graph module 
Import-Module Microsoft.Graph 

# Authenticate to Microsoft Graph (you may need to provide your credentials) 
Connect-MgGraph -Scopes "User.ReadWrite.All" 

# Specify the path to the CSV file containing user data 
$csvFilePath = "C:\\Path\\To\\Your\\Users.csv" 

# Read the CSV file (adjust the column names as needed) 
$usersData = Import-Csv -Path $csvFilePath 

# Loop through each row in the CSV and create users \
foreach ($userRow in $usersData) { 
    $userParams = @{ 
        DisplayName = $userRow.'Name [displayName] Required' 
        UserPrincipalName = $userRow.'User name [userPrincipalName] Required' 
        PasswordProfile = @{ 
            Password = $userRow.'Initial password [passwordProfile] Required' 
        } 
        AccountEnabled = $true 
        MailNickName = $userRow.mailNickName 
    } 
    try { 
        New-MgUser @userParams 
        Write-Host "User $($userRow.UserPrincipalName) created successfully." 
    } catch { 
        Write-Host "Error creating user $($userRow.UserPrincipalName): $($_.Exception.Message)" 
    } 
} 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

Write-Host "Bulk user creation completed." 

Note

必要な列 (たとえば、DisplayNameUserPrincipalName など) が CSV ファイルに含まれていることを確認します。 また、CSV ファイル内の実際の列名と一致するようにスクリプトを調整します。

ユーザーの一括削除

# Import the Microsoft Graph module 
Import-Module Microsoft.Graph 

# Authenticate to Microsoft Graph (you may need to provide your credentials) 
Connect-MgGraph -Scopes "User.ReadWrite.All" 

# Specify the path to the CSV file containing user data 
$csvFilePath = "C:\\Path\\To\\Your\\Users.csv" 

# Read the CSV file (adjust the column names as needed) 
$usersData = Import-Csv -Path $csvFilePath 

# Loop through each row in the CSV and delete users 
foreach ($userRow in $usersData) { 
    try { 
        Remove-MgUser -UserId $userRow.UserPrincipalName -Confirm:$false 
        Write-Host "User $($userRow.UserPrincipalName) deleted successfully." 
    } catch { 
        Write-Host "Error deleting user $($userRow.UserPrincipalName): $($_.Exception.Message)" 
    } 
} 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

Write-Host "Bulk user deletion completed." 

Note

必要な列 (たとえば、UserPrincipalName) が CSV ファイルに含まれていることを確認します。 また、CSV ファイル内の実際の列名と一致するようにスクリプトを調整します。

グループ

すべてのグループを一括ダウンロードする

Import-Module Microsoft.Graph.Groups 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "Group.Read.All" 

 # Get the group members 
 $groups = Get-MgGroup -All | Select displayName, Id, groupTypes,mail 

 # Create a custom object to store group data 
$groupData = @() 

# Loop through each group and collect relevant data 
foreach ($group in $groups) { 
    if ($group.groupTypes -contains "Unified"){$groupType = "Microsoft 365"} 
    else {$groupType = "Security"} 
    if ($group.groupTypes -contains "DynamicMembership"){$membershipType = "Dynamic"} 
    else {$membershipType = "Assigned"} 
    $groupObject = [PSCustomObject]@{ 
        Id = $group.Id 
        DisplayName = $group.displayName 
        Mail = $group.mail 
        GroupType = $groupType 
        MemebershipType = $membershipType 
    }   
    $groupData += $groupObject 
} 

 # Specify the output CSV file path 
 $outputCsvPath = "C:\\Users\\cewu\\Documents\\Groups.csv" 

 $groupData| Export-Csv -Path $outputCsvPath -NoTypeInformation 
 
 Write-Host "Group members exported to $outputCsvPath" 

グループのメンバーを一括ダウンロードする

Import-Module Microsoft.Graph.Groups 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "Group.Read.All,GroupMember.Read.All" 

 # Set the group ID of the group whose members you want to download 
 $groupId = "your_group_id" 

 # Get the group members 
 $members = Get-MgGroupMember -GroupId $groupId -All | select * -ExpandProperty additionalProperties | Select-Object @( 
                'id'     
                @{  Name       = 'userPrincipalName' 
                    Expression = { $_.AdditionalProperties["userPrincipalName"] } 
                } 
                @{  Name = 'displayName' 
                Expression = { $_.AdditionalProperties["displayName"] } 
                } 
            ) 

 # Specify the output CSV file path 
 $outputCsvPath = "C:\\Users\\YourUserName\\Documents\\GroupMembers.csv" 

 $members| Export-Csv -Path $outputCsvPath -NoTypeInformation 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

 Write-Host "Group members exported to $outputCsvPath"  

メンバーを一括で追加する

Import-Module Microsoft.Graph.Groups 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "GroupMember.ReadWrite.All" 

# Import the CSV file 
$members = Import-Csv -Path "C:\path\to\your\file.csv" 

# Define the Group ID 
$groupId = "your-group-id" 

# Iterate over each member and add them to the group 
foreach ($member in $members) { 
    try{ 
        New-MgGroupMember -GroupId $groupId -DirectoryObjectId $member.memberObjectId 
  	 Write-Host "Added $($member.memberObjectId) to the group."  
    } 
    Catch{ 
        Write-Host "Error adding member $($member.memberObjectId):$($_.Exception.Message)" 
    } 
} 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

メンバーを一括で削除する

Import-Module Microsoft.Graph.Groups 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "GroupMember.ReadWrite.All" 

# Import the CSV file 
$members = Import-Csv -Path "C:\path\to\your\file.csv" 

# Define the Group ID 
$groupId = "your-group-id" 

# Iterate over each member and add them to the group 
foreach ($member in $members) { 
    try{ 
        Remove-MgGroupMemberByRef -GroupId $groupId -DirectoryObjectId $member.memberObjectId \
        Write-Host "Removed $($member.memberObjectId) from the group." 
    } 
    Catch{ 
        Write-Host "Error removing member $($member.memberObjectId):$($_.Exception.Message)" 
    } 
} 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

デバイス

すべてのデバイスを一括ダウンロードする

Import-Module Microsoft.Graph 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "Device.Read.All" 

 # Get all devices  
 $devices = Get-MgDevice -All |select displayName,deviceId,operatingSystem,operatingSystemVersion,isManaged,isCompliant,mdmAppId,registeredOwners,TrustType 

 # Specify the output CSV file path 
 $outputCsvPath = "C:\\Users\\YourUserName\\Documents\\Devices.csv" 

 $devices| Export-Csv -Path $outputCsvPath -NoTypeInformation 

 Write-Host "Devices exported to $outputCsvPath"  

次のステップ