Microsoft Entra ID でユーザーを一括作成する
Microsoft Entra の一部である Microsoft Entra ID では、ユーザーの一括作成および削除操作がサポートされており、ユーザーのリストのダウンロードがサポートされています。 Microsoft Entra ID からダウンロードできるコンマ区切り値 (CSV) テンプレートを入力するだけです。
必要なアクセス許可
管理ポータルでユーザーを一括作成するには、少なくともユーザー管理者としてサインインしている必要があります。
CSV テンプレートについて
一括アップロード CSV テンプレートをダウンロードして入力すると、Microsoft Entra ユーザーを正常に一括作成できます。 ダウンロードする CSV テンプレートは、次の例のようになります。
警告
CSV テンプレートを使用してエントリを 1 つだけ追加する場合は、行 3 を保持し、新しいエントリを行 4 に追加する必要があります。
.csv
ファイル拡張子を追加して、userPrincipalName
、passwordProfile
、accountEnabled
の前にあるスペースが削除されていることを確認します。
CSV テンプレートの構造
ダウンロードした CSV テンプレート内の行は次のとおりです。
- バージョン番号: アップロード CSV の先頭行にバージョン番号を含める必要があります。
- 列見出し:列見出しの形式は、<項目名> [PropertyName] <Required または空白> です。 たとえば、「
Name [displayName] Required
」のように入力します。 テンプレートの古いバージョンの中には、微妙に異なるものもあります。 - 例の行:このテンプレートには、各列に使用できる値のサンプル行が含まれています。 サンプル行を削除し、独自のエントリに置き換える必要があります。
その他のガイダンス
- アップロード テンプレートの最初の 2 行を削除または変更することはできません。アップロードを処理することができなくなります。
- 必須の列が最初に示されています。
- テンプレートに新しい列を追加することはお勧めしません。 列を追加しても無視され、処理されません。
- できる限り、常に最新バージョンの CSV テンプレートをダウンロードすることをお勧めします。
- フィールドの前後に意図しない空白がないか確認してください。 ユーザー プリンシパル名の場合、そのような空白があると、インポートに失敗します。
- [初期パスワード] の値が、現在アクティブなパスワード ポリシーに準拠していることを確認します。
ユーザーを一括で作成する手順
Microsoft Entra 管理センターにユーザー管理者以上でサインインしてください。
[Microsoft Entra ID] を選びます。
すべてのユーザー>ユーザー>一括作成 を選択します。
[ユーザーの一括作成] ページで [ダウンロード] を選択し、ユーザー プロパティの有効な CSV (コンマ区切り値) ファイルを取得し、作成するユーザーを追加します。
CSV ファイルを開いて、作成するユーザーごとに 1 行を追加します。 必須値は、 [名前] 、 [ユーザー プリンシパル名] 、 [初期パスワード] 、および [サインインのブロック (はい/いいえ)] のみです。 そのうえでファイルを保存します。
[ユーザーの一括作成] ページの [CSV ファイルをアップロード] で、そのファイルを参照します。 ファイルを選択して [送信] をクリックすると、CSV ファイルの検証が開始されます。
ファイルの内容が検証された後、"ファイルが正常にアップロードされました" と表示されます。 エラーが存在する場合は、ジョブを送信する前にそれらを修正する必要があります。
ファイルが検証に合格したら、 [送信] を選択して、新しいユーザーをインポートする一括操作を開始します。
インポート操作が完了すると、一括操作ジョブの状況に関する通知が表示されます。
エラーが発生する場合は、[一括操作の結果] ページで結果ファイルをダウンロードして表示できます。 このファイルには、各エラーの理由が含まれています。 ファイルの送信は、指定されたテンプレートと一致し、正確な列名が含まれている必要があります。 一括操作の制限の詳細については、「一括インポート サービスの制限」を参照してください。
状態の確認
[一括操作の結果] ページでは、保留中のすべての一括要求の状態を確認できます。
次に、作成したユーザーが Microsoft Entra 組織に存在するかどうかを、Azure portal または PowerShell を使って確認します。
ユーザーを確認する
- Microsoft Entra 管理センターにユーザー管理者以上でサインインしてください。
- [Microsoft Entra ID] を選びます。
- すべてのユーザー>ユーザー を選択します。
- [表示] で [すべてのユーザー] を選択し、作成したユーザーが一覧に表示されていることを確認します。
PowerShell でユーザーを確認する
次のコマンドを実行します。
Get-MgUser -Filter "UserType eq 'Member'"
作成したユーザーがリストされているのを確認できます。
一括インポート サービスの制限
各一括操作アクティビティを実行できる時間は最大 1 時間であることに注意する必要があります。
非常に大規模なテナントでは、Microsoft Entra 管理ポータルでの一括操作はタイムアウトになり、失敗する可能性があります。 この制限は、スケーリングの制限が原因である既知の問題です。 Microsoft のエンジニアリング チームは、この制限を最終的に解決する新しいサービスに取り組んでいます。
Note
インポートや作成などの一括操作を実行するときに、一括操作が 1 時間以内に完了しない場合、問題が発生する可能性があります。 この問題を回避するには、バッチごとに処理されるレコードの数を分割することをお勧めします。 たとえば、エクスポートの開始前に、グループの種類またはユーザー名でフィルター処理して結果セットを制限し、結果のサイズを小さくすることができます。 フィルターを絞り込むと、実質的には一括操作によって返されるデータを制限することになります。
この問題のもう 1 つの回避策は、PowerShell を使用して Microsoft Graph API を直接呼び出す方法です。 ユーザーとグループの一括ダウンロードに失敗した場合は、PowerShell コマンドレットの GET-MgGroup -All
と GET-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
必要な列 (たとえば、DisplayName
、UserPrincipalName
など) が 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"