次の方法で共有


Microsoft Entra ID でユーザーを一括作成する

Microsoft Entra の一部である Microsoft Entra ID では、ユーザーの一括作成および削除操作がサポートされており、ユーザーのリストのダウンロードがサポートされています。 Microsoft Entra ID からダウンロードできるコンマ区切り値 (CSV) テンプレートを入力するだけです。

必要なアクセス許可

管理ポータルでユーザーを一括作成するには、少なくともユーザー管理者としてサインインしている必要があります。

CSV テンプレートについて

一括アップロード CSV テンプレートをダウンロードして入力すると、Microsoft Entra ユーザーを正常に一括作成できます。 ダウンロードする CSV テンプレートは、次の例のようになります。

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

警告

CSV テンプレートを使用してエントリを 1 つだけ追加する場合は、行 3 を保持し、新しいエントリを行 4 に追加する必要があります。

.csv ファイル拡張子を追加して、userPrincipalNamepasswordProfileaccountEnabled の前にあるスペースが削除されていることを確認します。

CSV テンプレートの構造

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

  • バージョン番号: アップロード CSV の先頭行にバージョン番号を含める必要があります。
  • 列見出し:列見出しの形式は、<項目名> [PropertyName] <Required または空白> です。 たとえば、「 Name [displayName] Required 」のように入力します。 テンプレートの古いバージョンの中には、微妙に異なるものもあります。
  • 例の行:このテンプレートには、各列に使用できる値のサンプル行が含まれています。 サンプル行を削除し、独自のエントリに置き換える必要があります。

その他のガイダンス

  • アップロード テンプレートの最初の 2 行を削除または変更することはできません。アップロードを処理することができなくなります。
  • 必須の列が最初に示されています。
  • テンプレートに新しい列を追加することはお勧めしません。 列を追加しても無視され、処理されません。
  • できる限り、常に最新バージョンの CSV テンプレートをダウンロードすることをお勧めします。
  • フィールドの前後に意図しない空白がないか確認してください。 ユーザー プリンシパル名の場合、そのような空白があると、インポートに失敗します。
  • [初期パスワード] の値が、現在アクティブなパスワード ポリシーに準拠していることを確認します。

ユーザーを一括で作成する手順

  1. Microsoft Entra 管理センターユーザー管理者以上でサインインしてください。

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

  3. すべてのユーザー>ユーザー>一括作成 を選択します。

  4. [ユーザーの一括作成] ページで [ダウンロード] を選択し、ユーザー プロパティの有効な CSV (コンマ区切り値) ファイルを取得し、作成するユーザーを追加します。

    追加するユーザーが列記されているローカル CSV ファイルを選ぶ方法を示すスクリーンショット。

  5. CSV ファイルを開いて、作成するユーザーごとに 1 行を追加します。 必須値は、 [名前][ユーザー プリンシパル名][初期パスワード] 、および [サインインのブロック (はい/いいえ)] のみです。 そのうえでファイルを保存します。

    作成するユーザーの名前と ID が含まれる CSV ファイルの例を示すスクリーンショット。

  6. [ユーザーの一括作成] ページの [CSV ファイルをアップロード] で、そのファイルを参照します。 ファイルを選択して [送信] をクリックすると、CSV ファイルの検証が開始されます。

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

  8. ファイルが検証に合格したら、 [送信] を選択して、新しいユーザーをインポートする一括操作を開始します。

  9. インポート操作が完了すると、一括操作ジョブの状況に関する通知が表示されます。

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

状態の確認

[一括操作の結果] ページでは、保留中のすべての一括要求の状態を確認できます。

一括操作の結果ページで操作の状態を調べる方法を示すスクリーンショット。

次に、作成したユーザーが Microsoft Entra 組織に存在するかどうかを、Azure portal または PowerShell を使って確認します。

ユーザーを確認する

  1. Microsoft Entra 管理センターユーザー管理者以上でサインインしてください。
  2. [Microsoft Entra ID] を選びます。
  3. すべてのユーザー>ユーザー を選択します。
  4. [表示][すべてのユーザー] を選択し、作成したユーザーが一覧に表示されていることを確認します。

PowerShell でユーザーを確認する

次のコマンドを実行します。

Get-MgUser -Filter "UserType eq 'Member'"

作成したユーザーがリストされているのを確認できます。

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

各一括操作アクティビティを実行できる時間は最大 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"  

次のステップ