グループの管理

この記事では、Microsoft Entra PowerShell を使用してMicrosoft Entra IDでグループを管理する方法について説明します。 例には、グループの作成と更新、ユーザーと所有者の追加、所有者なしのクエリ、空のグループなどがあります。

前提条件

グループを作成する

グループを作成するには、グループを作成するために必要なアクセス許可があることを確認します。

Connect-Entra -Scopes 'Group.ReadWrite.All' 

新しいグループを作成するには、次のコマンドを実行します。

$groupParams = @{
    DisplayName = 'Contoso marketing'
    MailEnabled = $false
    SecurityEnabled = $true
    MailNickName = 'NotSet'
}
New-EntraGroup @groupParams
DisplayName  Id                                   MailNickname Description GroupTypes
-----------  --                                   ------------ ----------- ----------
Contoso marketing aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb NotSet                   {}

このコマンドは、 Contoso marketingという名前の新しいグループを作成します。

次のコマンドを使用して、作成されたグループを検索します。

Get-EntraGroup -Filter "displayName eq 'Contoso marketing'"
DisplayName        Id                                   MailNickname     Description        GroupTypes
-----------        --                                   ------------     -----------        ----------
Contoso marketing       aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb NotSet       Contoso marketing EMEA        {}

このコマンドは、新しく作成されたグループの詳細を返します。 GroupId (GUID) を使用して、グループを検索、更新、または削除することもできます。

グループの詳細を更新する

次のコマンドを実行して、グループの説明を更新します。

Get-EntraGroup -Filter "displayName eq 'Contoso marketing'" | Set-EntraGroup -Description 'Contoso marketing Global'

更新された説明を確認するには、 Get-EntraGroup をもう一度実行します。

Get-EntraGroup -Filter "displayName eq 'Contoso marketing'"  

グループにユーザーを追加する

次のコマンドを実行して、ユーザーをグループに追加します。 GroupIdはグループ ID、MemberIdはユーザー ID です。 ユーザー ID は、Microsoft Entra 管理センターから取得することも、Get-EntraUser コマンドを実行して取得することもできます。

$group = Get-EntraGroup -Filter "displayName eq 'Contoso marketing'"
$user = Get-EntraUser -UserId 'SawyerM@contoso.com'
Add-EntraGroupMember -GroupId $group.Id -MemberId $user.Id

グループ メンバーを取得するには、次のコマンドを使用します。

$group = Get-EntraGroup -Filter "displayName eq 'Contoso marketing'"
Get-EntraGroup -GroupId $group.Id | Get-EntraGroupMember | Select-Object Id, DisplayName, '@odata.type' 
Id                                   DisplayName       @odata.type                     
------------------------------------ ----------------- -------------------------------
dddddddd-3333-4444-5555-eeeeeeeeeeee Sawyer Miller     #microsoft.graph.user
eeeeeeee-4444-5555-6666-ffffffffffff Alex Wilber       #microsoft.graph.user
aaaaaaaa-6666-7777-8888-bbbbbbbbbbbb My Application    #microsoft.graph.servicePrincipal
cccccccc-8888-9999-0000-dddddddddddd Contoso Group     #microsoft.graph.group

グループ所有者としてユーザーを追加する

次のコマンドを実行して、グループ所有者をグループに追加します。 GroupIdはグループ ID、OwnerIdはユーザー ID です。

$group = Get-EntraGroup -Filter "displayName eq 'Contoso marketing'"
$owner = Get-EntraUser -UserId 'AdeleV@contoso.com'
Add-EntraGroupOwner -GroupId $group.Id -OwnerId $owner.Id

更新されたグループ所有者を確認するには、次のコマンドを使用します。

$group = Get-EntraGroup -Filter "displayName eq 'Contoso marketing'"
Get-EntraGroup -GroupId $group.Id | Get-EntraGroupOwner | Select-Object Id, DisplayName, '@odata.type'
Id                                   DisplayName       @odata.type
------------------------------------ ----------------- ---------------------------
aaaaaaaa-6666-7777-8888-bbbbbbbbbbbb Adele Vance       #microsoft.graph.user

所有者がいないグループまたは空のグループに対してクエリを実行する

所有者なしでグループにクエリを実行するには、次のコマンドを実行します。

$allGroups = Get-EntraGroup -All
$groupsWithoutOwners = foreach ($group in $allGroups) {
    $owners = Get-EntraGroupOwner -GroupId $group.Id
    if ($owners.Count -eq 0) {
        $group
    }
}
$groupsWithoutOwners | Format-Table DisplayName, Id, GroupTypes
DisplayName              Id                                   GroupTypes
-----------              --                                   ----------
Contoso marketing        aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb {}
HelpDesk admin group     eeeeeeee-4444-5555-6666-ffffffffffff {}

メンバー (空のグループ) なしでグループにクエリを実行するには、次のコマンドを実行します。

$allGroups = Get-EntraGroup -All
$groupsWithoutMembers = foreach ($group in $allGroups) {
    $members = Get-EntraGroupMember -GroupId $group.Id
    if ($members.Count -eq 0) {
        $group
    }
}
$groupsWithoutMembers | Format-Table DisplayName, Id, GroupTypes
DisplayName             Id                                   GroupTypes
-----------            --                                   ----------
Contoso marketing      aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb {}
HelpDesk admin group   eeeeeeee-4444-5555-6666-ffffffffffff {}

リソースをクリーンアップする

グループを削除するには、次のコマンドを使用します。

Get-EntraGroup -Filter "displayName eq 'Contoso marketing'" | Remove-EntraGroup