Microsoft Graph PowerShell でライセンス操作

★★★ Live配信告知 ★★★
◆◇世界一わかりみの深いクラウドネイティブ on Azure◆◇
6/22(金) 12:00~ 第14回:世界一わかりみの深いAzure Bot Service 〜AIによるFAQチャットボット構築〜
今回はAzure Cognitive Service for LanguageというAzureのAIサービスを用いて、FAQチャットボットの構築方法についてわかりみ深く説明します。
◆◇PS Live配信◆◇
5/20(金) 17:00~ アウトプットはイイぞ 〜人生折り返し地点からの情報発信で学びが楽しくなった話〜
2020年にMicrosoft MVP for Azure を受賞した武井が人生を変えたアウトプットについてそのノウハウをお伝えします。

こんにちは。サイオステクノロジーの木村です。

こちらの記事によると、ライセンス割り当てAPIの廃止に伴い、2022年6月30日以降、MSOnline Powershell のライセンスを操作する以下のコマンドが使えなくなるようです。

  • Set-MsolUserLicense
  • New-MsolUser (-LicenseAssignment または -LicenseOptions を指定する場合)

そのため、これらコマンドを使用してスクリプトなどでライセンス操作を行なっている場合、修正する必要があります。

これらコマンドの代わりに今後は、Microsoft Graph PowerShell SDKの Set-MgUserLicense コマンドを使用してライセンス操作をすることが推奨されています。

そこで今回は、Microsoft Graph PowerShell を使用してライセンス操作を行う方法について記載します。

Microsoft Graph PowerShell とは

Microsoft Graph PowerShell は、Microsoft Graph APIのAPIラッパーとして機能し、PowerShellコマンドの実行にてMicrosoft Graph API を 呼び出せるようにしたPowerShellモジュールです。
公式ドキュメントは こちら

Microsoft Graph PowerShellモジュールのインストール

PowerShellを管理者で起動し、以下のコマンドを実行してインストールします。

Microsoft Graphへの接続(管理者の資格情報を使用)

管理者の資格情報をもとにMicrosoft Graphへ接続する手順は以下になります。

1. PowerShellを起動し、以下のコマンドを実行します。
(パラメータ Scopes には、テナントに紐づくライセンス情報を取得するために、Organization.Read.All のアクセス許可を指定します。また、ユーザーのライセンス情報取得・付与などを行うために、User.ReadWrite.All のアクセス許可を指定します。)

2. サインイン画面が表示されますので、管理者のユーザー名とパスワードを入力し、「サインイン」をクリックします。

3. 「承諾」をクリックします。

4. 認証情報を正しく入力しサインインすると接続が完了します。「Get-MgSubscribedSku」などのコマンドを実行すると、実行でき、接続されていることが確認できます。

5. ライセンスの操作を行う場合は、以下のコマンドを実行しモジュールのインポートを行います。

Microsoft Graphへの接続(サービス プリンシパルを使用)

サインイン画面を表示し、管理者の資格情報を入力する方法ですと、画面にアカウント名・パスワードを手入力しなければならず、スクリプトなどで自動で接続を行うことはできません。
以下に記載するサービス プリンシパルを使用する方法では、画面にアカウント名・パスワードを手入力する必要がなく、スクリプトなどで自動で接続することができます。
サービス プリンシパルを使用する方法では、証明書を発行したアプリケーションにアクセス許可を付与し、アプリケーション経由で認証および操作を行います。

アプリケーションの登録

アプリケーションをAzureADに登録します。以下の手順で行います。

1. 管理者でAzureポータル(https://portal.azure.com/)にログインします。

2. メニューより「Azure Active Directory」をクリックします。

3. 「アプリの登録」をクリックし「+新規登録」をクリックします。

4. アプリケーションの登録ページで、以下を入力し「登録」をクリックします。

  • 名前:任意の名称
  • サポートされているアカウントの種類:この組織ディレクトリのみに含まれるアカウント
  • リダイレクトURI(省略可能):Web、テキストボックスは空欄

5. 表示された [アプリケーション (クライアント) ID] と [ディレクトリ (テナント) ID] の値をメモしておきます。

6. 「API のアクセス許可」をクリックし、 「+アクセス許可の追加」をクリックします。

7. 「Microsoft Graph」をクリックします。

8. 「アプリケーションの許可」 をクリックし、[Organization.Read.All] と [User.ReadWrite.All] を選択して [アクセス許可の追加] をクリックします。

9. <テナント名>に管理者の同意を与えます」をクリックします。

10. 「はい」をクリックします。

11. 状態が「<テナント名>に付与されました」と表示されれば、アプリケーションの登録は完了です。

12. アプリケーションに登録する証明書を用意し、GraphPowerShellに接続する環境にインストールします。
自己証明書を使用する場合は、PowerShell にて、以下のコマンドで自己証明書の作成とインストールができます。

13. 先の手順で登録したアプリケーションのページにて、「証明書とシークレット」をクリックし、「証明書のアップロード」をクリックします。

14. 登録したい証明書を指定し、「追加」をクリックします。

15. アプリケーションに証明書が追加されます。

Microsoft Graphへの接続

PowerShellを起動し、以下のコマンドを実行して接続します。
接続後、ライセンス操作に必要なモジュールをインポートします。

ライセンス情報の取得

ユーザーへのライセンス付与や削除を行う際は、ライセンスの SkuId や ServicePlanId を使用します。(SkuIdやサービスプランの詳細についてはこちらの公開情報をご参照ください。)
以下に、それらライセンス情報の取得方法を記載します。

テナントに紐づくライセンス情報の取得

テナントに紐づくライセンス情報は以下のコマンドで取得できます。

コマンド:Get-MgSubscribedSku

例:ライセンスのSkuIdの確認

例:ライセンスに紐づくServicePlanIdの確認

ユーザーに付与されているライセンス情報の取得

ユーザーに付与されているライセンス情報は以下のコマンドで取得できます。

コマンド:Get-MgUser
コマンド:Get-MgUserLicenseDetail

例:Get-MgUser コマンドで、付与されているライセンスのSkuId, 無効にされているサービスプランを確認

例:Get-MgUserLicenseDetail コマンドで、付与されているライセンスのサービスプランなどを確認

ライセンス操作

ユーザーのライセンスの操作を行うには以下のコマンドを使用します。

コマンド:Set-MgUserLicense

ユーザーにライセンスを付与する

MicrosoftGraphAssignedLicense オブジェクトを作成し、
SkuIdに付与するライセンスの SkuId を、
DisabledPlansにそのSkuIdで無効にするサービスプランの ServicePlanId を指定します。
それを Set-MgUserLicense コマンドの AddLicenses パラメーターに配列として指定すると、ユーザーにライセンスを付与することができます。
DisabledPlansに何も指定しない場合は、全てのサービスプランが有効になります。
複数のライセンスを割り当てる場合は、それぞれの MicrosoftGraphAssignedLicense オブジェクトを作成し、Set-MgUserLicense コマンドの AddLicenses パラメーターに、カンマ区切りで指定します。

例1:ライセンスを付与し、全てのサービスプランを有効にする場合
以下の例では、Microsoft E3 ライセンスを付与します。

例2:ライセンスを付与し、特定のサービスプランを無効にする場合
以下の例では、Microsoft E3 ライセンスを付与し、Sway と Yammer Enterprise を無効にします。

例3:複数のライセンスを付与する場合
以下の例では、Microsoft E3 ライセンスと、 Power BI Free ライセンスを付与します。Microsoft E3 ライセンスは、Swayを無効にします。

ユーザーからライセンスを削除する

Set-MgUserLicense コマンドの RemoveLicenses パラメーターに削除したいライセンスの SkuId を配列として指定すると、指定したライセンスをユーザーから削除することができます。

例1:1つのライセンスを削除する場合

例2:複数のライセンスを削除する場合
複数削除する場合は、カンマ区切りで指定します。

ユーザーのライセンスを変更する

ユーザーのライセンスを変更する(現在付与されているライセンスを削除し、別のライセンスを付与する)には、削除するライセンスをRemoveLicenses に指定し、新しく付与するライセンスを AddLicenses に指定します。


以下の例では、Microsoft E3 ライセンスを削除し、新しくProject Plan5 ライセンスを割り当てます。

ユーザーに付与されているライセンスのサービスプランを変更する

ユーザーに付与されているライセンスのサービスプランを変更するには、ユーザーにライセンスを付与する時と同様、MicrosoftGraphAssignedLicense オブジェクトを作成し、
SkuIdにライセンスの SkuId を、
DisabledPlansにそのSkuIdで無効にするサービスプランの ServicePlanId を指定します。
それをSet-MgUserLicense コマンドの AddLicenses パラメーターに指定します。
DisabledPlansに指定されたサービスプラン以外は有効になります。


以下の例では、既に付与されているMicrosoft E3 ライセンスについて、無効にするサービスプランをExchange Online と、Yammer Enterprise に変更します。

Microsoft Graphからの切断

以下のコマンドを実行すると、接続を切断できます。

その他(ユーザー作成と同時にライセンス付与できる?)

APIの廃止に伴い使用できなくなるコマンドは、以下の2つです。

  • Set-MsolUserLicense
  • New-MsolUser (-LicenseAssignment または -LicenseOptions を指定する場合)

これに対して代わりに推奨されているコマンドは Set-MgUserLicense のみです。
つまり、New-MsolUser を使用時は、ユーザー作成と同時にライセンスの付与ができていましたが、今後はユーザー作成と同時にライセンス付与ができず、ユーザー作成後に Set-MgUserLicense コマンドでライセンスを付与する形になります。
Microsoft Graph PowerShell SDK には、New-MsolUser のようにユーザー作成を行う New-MgUser コマンドがあります。そして、New-MgUser コマンドにはおそらくライセンスを付与するために使うであろうと思われる -AssignedLicenses パラメータがあるのですが、当記事の執筆時点では、このパラメータはread-onlyとなっており、機能が提供されていないようです。「-AssignedLicenses」パラメータの機能が提供されるようになれば、Microsoft Graph PowerShellでもユーザー作成と同時にライセンスが付与されるようになるかもしれません。機能が提供されることを期待します。
New-MgUser コマンドについての詳細はこちらの公式ドキュメントを参照して下さい。





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*