PowerShell を使用して Microsoft 365 ユーザー アカウントに管理者ロールを割り当てる

この記事は、Microsoft 365 Enterprise および Office 365 Enterprise の両方に適用されます。

PowerShell for Microsoft 365 を使用すると、ユーザー アカウントにロールを簡単に割り当てることができます。

注:

Microsoft 365 管理センターを使用してユーザー アカウントに管理者ロールを割り当てる方法について説明します。

その他のリソースの一覧については、「 ユーザーとグループの管理」を参照してください。

Microsoft Graph PowerShell を使用してユーザー アカウントにロールを割り当てる

注:

Azure Active Directory モジュールは、Microsoft Graph PowerShell SDK に置き換えられます。 Microsoft Graph PowerShell SDK を使用して、すべての Microsoft Graph API にアクセスできます。 詳細については、「Microsoft Graph PowerShell SDK の使用を開始する」 を参照してください。

まず、Microsoft Entra DC 管理者Cloud Application 管理、またはグローバル管理者アカウントを使用して、Microsoft 365 テナントに接続します。 この記事のコマンドレットには、アクセス許可スコープ RoleManagement.ReadWrite.Directory、または参照ページの [サブスクライブ済みSkus の一覧表示] に記載されている他のアクセス許可のいずれかが必要Graph API。 この記事の一部のコマンドでは、異なるアクセス許可スコープが必要になる場合があります。その場合は、関連するセクションで説明します。

Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"

詳細については、「管理者の役割について」を参照してください。

次に、ロールに追加するユーザー アカウントのサインイン名を特定します (例: fredsm@contoso.com)。 これはユーザー プリンシパル名 (UPN) とも呼ばれます。

次に、ロールの名前を決めます。 「組み込みロールMicrosoft Entra」を参照してください。

注:

この記事のメモに注意してください。 Azure Active Directory (Azure AD) PowerShell では、一部のロール名が異なります。 たとえば、Microsoft 365 管理センターの SharePoint 管理者ロールは、Azure AD PowerShell の SharePoint サービス管理者です。

次に、ユーザー UPN とロール名を入力し、次のコマンドを実行します。

$userUPN="<user UPN>"
$roleName="<role name>"
$role = Get-MgDirectoryRole | Where-Object {$_.displayName -eq $roleName}
if ($role -eq $null) {
    $roleTemplate = (Get-MgDirectoryRoleTemplate | Where-Object {$_.displayName -eq $roleName}).id
    New-MgDirectoryRole -DisplayName $roleName -RoleTemplateId $roleTemplate
    $role = Get-MgDirectoryRole | Where-Object {$_.displayName -eq $roleName}
}
$userId = (Get-MgUser -Filter "userPrincipalName eq '$userUPN'").Id
$newRoleMember =@{
    "@odata.id"= "https://graph.microsoft.com/v1.0/users/$userId"
    }
New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $newRoleMember

SharePoint サービス管理者ロールをアカウントに割り当てる完了したコマンド セットの例を次に belindan@contoso.com 示します。

$userUPN="adelev@contoso.com"
$roleName="Exchange Administrator"
$role = Get-MgDirectoryRole | Where-Object {$_.displayName -eq $roleName}
if ($role -eq $null) {
    $roleTemplate = (Get-MgDirectoryRoleTemplate | Where-Object {$_.displayName -eq $roleName}).id
    New-MgDirectoryRole -DisplayName $roleName -RoleTemplateId $roleTemplate
    $role = Get-MgDirectoryRole | Where-Object {$_.displayName -eq $roleName}
}
$userId = (Get-MgUser -Filter "userPrincipalName eq '$userUPN'").Id
$newRoleMember =@{
    "@odata.id"= "https://graph.microsoft.com/v1.0/users/$userId"
    }
New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $newRoleMember

特定の管理者ロールのユーザー ID の一覧を表示するには、次のコマンドを使用します。

$roleName="<role name>"
Connect-MgGraph -Scopes "Directory.Read.All"
Get-MgDirectoryRole | Where-Object { $_.DisplayName -eq $roleName } | ForEach-Object { Get-MgDirectoryRoleMember -DirectoryRoleId $_.Id }

関連項目