MSOnline / AzureAD PowerShell から Graph PowerShell SDK への移行について 5_グループ管理

Published: / Last update: / Contributors:
feedback 共有

こんにちは、 Azure Identity サポート チームの三輪です。

この記事は、MSOnline / AzureAD モジュール廃止について、下記シリーズの続きとして連載しています。

1_概要編
2_移行導入編
3_インストール・接続編
4_ユーザー管理

5 回目となる今回は、グループ管理についてご紹介します。

まだモジュールをインストールしていない場合や、 Connect-MgGraph コマンドを使用した接続方法が分からない場合などは、本シリーズの 2 と 3 をご確認ください。

目次

  1. グループの取得
  2. グループ メンバーの取得
  3. グループ メンバーの追加および削除
  4. 特定のユーザーが所属するグループ一覧の取得

1. グループの取得

以前、グループ情報を取得するのに利用していた Get-AzureADGroup や Get-MsolGroup は、Get-MgGroup コマンドに置き換わります。以下にいくつかのシナリオをベースに例を紹介いたします。

テナントの全グループを取得する場合

-All オプションを使用します。Get-AzureADGroup コマンドでは、 -All $true とする必要がありましたが、新しいコマンドでは -All のみで動作します。

Get-MgGroup -All

特定のグループを取得する場合

ObjectID を指定することで特定のグループの情報を取得が可能です。

Get-MgGroup -GroupId 027926f5-a926-464b-89b0-8c4cb1eebb5b

特定の条件に合うグループを取得する場合

Get-MgUser コマンドと同様に、-Filter オプション等を活用して、条件に合致するグループのみを表示させることが可能です。以下に例をご紹介します。

DisplayName が特定の文字列から始まるグループのみを取得する場合

Get-MgGroup -All -Filter "startsWith(DisplayName,'A')"

Teams が有効となっているグループのみを取得する場合

Get-MgGroup -All -Filter "(resourceProvisioningOptions/any(c:c eq 'Team'))"

利用可能なパラメーターは Filter 以外にもありますが、各属性によってサポートされるオプションが異なります。下記のような公開情報を確認いただき、使用したい属性とオプションがサポートされているか、あらかじめご確認ください。

2. グループ メンバーの取得

グループに所属するメンバーは、Get-MgGroup コマンドにで取得可能です。

指定したグループのメンバーを取得する

Get-MgGroupMember コマンドを用い、グループの ObjectID を指定します。

Get-MgGroupMember -All -GroupId 027926f5-a926-464b-89b0-8c4cb1eebb5b

グループに所属するメンバーの Id 以外の情報を取得したい場合は、以下のように additionalproperties を用いてメンバー情報を取得することが可能です。

(Get-MgGroupMember -All -GroupId 027926f5-a926-464b-89b0-8c4cb1eebb5b).additionalproperties.displayName

グループに所属するメンバーの Id と 表示名等、任意の複数の情報を取得したい場合には、以下のようにして抽出することも可能です。

Get-MgGroupMember -All -GroupId 027926f5-a926-464b-89b0-8c4cb1eebb5b|%{ [pscustomobject]@{UserId = $_.id; displayName = $_.additionalproperties.displayName} }

2つのグループに共通するメンバー

コマンドを組み合わせることで、2 つのグループに共通するユーザーのみを抽出することも可能です。以下の例では CommonMemberIds に共通するメンバーのリストが格納されます。

$groupAMembers = Get-MgGroupMember -GroupId dbf376f0-142d-4ed3-845e-e899a7f1cbca -All
$groupBMembers = Get-MgGroupMember -GroupId 607357fb-df96-4593-8429-dcc86654afee -All
$CommonMemberIds = @()
foreach ($groupAMemberId in $groupAMembers.Id) {
if ($groupBMembers.Id.Contains($groupAMemberId)) {
$CommonMemberIds += $groupAMemberId
}
}

また、GroupA のメンバーではあるが、GroupB のメンバーではないユーザーを取得する際には、以下のようにスクリプトに ”!” を追加して抽出します。

$groupAMembers = Get-MgGroupMember -GroupId dbf376f0-142d-4ed3-845e-e899a7f1cbca -All
$groupBMembers = Get-MgGroupMember -GroupId 607357fb-df96-4593-8429-dcc86654afee -All
$NCommonMemberIds = @()
foreach ($groupAMemberId in $groupAMembers.Id) {
if (!$groupBMembers.Id.Contains($groupAMemberId)) {
$NCommonMemberIds += $groupAMemberId
}
}

以下の公開情報も併せてご確認ください。

※ Get-MgGroupMember コマンドで取得できるのは、グループのダイレクト メンバーの一覧です。入れ子になったグループ内メンバーを含むすべてのメンバーを推移的に取得したい場合には、Get-MgGroupTransitiveMember を使用します。

3. グループ メンバーの追加および削除

グループ メンバーの追加

グループ メンバーの追加には New-MgGroupMember を用い、-GroupId としてグループの ObjectID を、-DirectoryObjectId として追加したいメンバーの ObjectID を指定します。

New-MgGroupMember -GroupId '872648e7-b23a-4328-bd46-f1bd431c2354' -DirectoryObjectId '8a7c50d3-fcbd-4727-a889-8ab232dfea01'

複数のユーザーを 1 つのグループに追加したい場合には、追加したいユーザーの ObjectID の一覧を作成し、-DirectoryObjectId として作成したユーザーの一覧を参照させます。

追加したいユーザーの ObjectID 一覧の csv ファイル例:

$GroupId = "872648e7-b23a-4328-bd46-f1bd431c2354"
Import-CSV "C:\Temp\Users.csv" | ForEach {New-MgGroupMember -GroupId $GroupId -DirectoryObjectId $_.ObjectId}

また、ユーザーの Object ID の代わりに ユーザーの UPN を使用したい場合には、4_ユーザー管理操作の紹介 で紹介した Get-MgUser コマンドと組み合わせて、以下のようにスクリプトを作成することも可能です。

$GroupId = "872648e7-b23a-4328-bd46-f1bd431c2354"
Import-CSV "C:\Temp\Users.csv" | ForEach {
$UserId = (Get-MgUser -UserId $_.UserPrincipalName).id
New-MgGroupMember -GroupId $GroupId -DirectoryObjectId $UserId
}

以下の公開情報も併せてご確認ください。

グループ メンバーの削除

グループ メンバーの削除には Remove-MgGroupMemberByRef を用い、グループの ObjectID および削除したいユーザーの Object ID を指定してグループ メンバーを削除します。

Remove-MgGroupMemberByRef -GroupId '872648e7-b23a-4328-bd46-f1bd431c2354' -DirectoryObjectId '8a7c50d3-fcbd-4727-a889-8ab232dfea01'

グループ メンバー削除に関しても、グループ メンバーの追加と同様、CSV ファイルを利用してのメンバーの一括削除や Get-MgUser とコマンドを組み合わせての UPN 指定によるメンバー削除が可能です。

以下の公開情報も併せてご確認ください。

4. 特定のユーザーが所属するグループ一覧の取得

特定のユーザーが所属するグループ一覧を取得するには、Get-MgUserMemberOf を用い、ユーザーの ObjectID または UPN を指定します。

Get-MgUserMemberOf -UserId de673304-dcaf-4bfd-9acb-4f2abb937948

ユーザーが所属するグループの表示名も一緒に出力したい場合は、以下のように additionalproperties から displayName が取得できます。

Get-MgUserMemberOf -UserId "de673304-dcaf-4bfd-9acb-4f2abb937948" | %{
[pscustomobject]@{
Id = $_.id
displayName = $_.additionalproperties['displayName']
}
}

以下の公開情報も併せてご確認ください。

Get-MgUserMemberOf (Microsoft.Graph.Users) | Microsoft Learn

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。