ブログ

2026/02/06
【M365:管理者向け】PowerShellを利用した、ライセンス一括付与・削除

~実際あった事例および解決方法をご紹介します~

こんにちは!ペンネーム「RM」です。

複数ユーザーに対して、同一のライセンスを付与してほしいと依頼があり、数十人ほど対象者がいましたので管理画面にて一人ずつライセンスを付与では時間がかかってしまうので、PowerShellを利用して一括で付与しました。

■前提条件
・ライセンスを付与するメールアドレス(アカウント)がMicrosoft 365上に存在すること
・当該テナントの管理者アカウントの資格情報を持っている事
※ここで言う資格情報は管理者アカウントのメールアドレスとパスワードになります。

手順

1. PowerShell を管理者として起動
左下の「スタートボタン(Windowsマーク)」をクリックします。
「アプリ、設定、ドキュメントの検索」の欄に「Windows PowerShell」と入力します。



「管理者として実行する」をクリックします。
もし、「このアプリがデバイスに変更を加えることを許可しますか?」と聞かれたら
「はい(Y)」をクリックしてください。

これで、PowerShellが管理者権限で開きます。
PS C:\Windows\system32>と文字が表示されていれば成功です。



 

2.Microsoft Graph SDK のインストール
以下のコマンドを実行します。
Install-Module Microsoft.Graph -Scope CurrentUser

以下のようなメッセージが出た場合、「Y」を入力し、Enterキーを押してください。
------------------------------------------------------------------------------------------------
信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSRepository
コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery' からモジュールをインストールしますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"):
------------------------------------------------------------------------------------------------

インストールが完了しましたら、以下のコマンドを実行し、Microsoft Graph SDK のインストールがされているか確認します。
Get-Module Microsoft.Graph -ListAvailable



 

必要に応じて、以下のコマンドにてMicrosoft Graph SDK のアップデートを実施ください。
Update-Module Microsoft.Graph

 

3. Microsoft Graph に接続
以下のコマンド実施し、Microsoft Graph に接続します。
Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All"

初回接続時には、ブラウザが開いて Microsoft アカウントでのサインインが求められるので、テナント管理者アカウントでサインインします。



※補足
コマンド内の以下はアクセス許可の設定になります。
"User.ReadWrite.All"
すべてのユーザーの完全なプロファイルの読み取りと書き込みが許可されます。

"Organization.Read.All"
会社情報の読み取り

他にも様々な権限設定が可能になります。詳細は以下のMicrosoftの記事を参照ください。

Microsoft Graph のアクセス許可のリファレンス - Microsoft Graph | Microsoft Learn

 

4.ライセンスの付与
以下の例を参考にコマンドを実行します。
$Lo = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E3'

Set-MgUserLicense -UserId "xxx@aaa.co.jp" -AddLicenses @{SkuId = $Lo.SkuId} -RemoveLicenses @()

※xxx@aaa.co.jpに対してMicrosoft 365 E3のライセンスを付与する場合のコマンドになります。
※'SPE_E3'の箇所を適宜、付与したいライセンスのSkuPartNumberに修正して下さい。SkuPartNumberの一覧は以下Microsoftのサイトよりご確認ください。

ライセンスのための製品名とサービス プラン 識別子 - Microsoft Entra ID | Microsoft Learn

→製品名に対する文字列IDの箇所がSkuPartNumberになります。

 

▼コマンドの解説:
$Lo = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E3'

Get-MgSubscribedSku -All
Microsoft 365 テナントで現在利用可能なライセンスプランを取得します。



| Where SkuPartNumber -eq 'SPE_E3'
取得したライセンスプランの中から、SkuPartNumber が'SPE_E3'(Microsoft 365 E3)に一致するものをフィルタリングします。



取得した情報を変数$Loに格納します。
→変数Loにあらかじめ付与するライセンスの情報を指定する形にしておくことで、様々なライセンスを柔軟に付与することが可能です。

Set-MgUserLicense -UserId "xxx@aaa.co.jp" -AddLicenses @{SkuId = $Lo.SkuId} -RemoveLicenses @()

Set-MgUserLicense
指定したユーザーに対してライセンスの追加・削除を行うコマンドです。

-UserId "xxx@aaa.co.jp"
対象ユーザーのメールアドレスを指定します。

-AddLicenses @{SkuId = $Lo.SkuId}
$Lo.SkuId(Microsoft 365 E3 の SKU ID)を使って、そのライセンスをユーザーに追加します。

-RemoveLicenses @()
-RemoveLicenses パラメーターには、削除したいライセンスの SKU IDを指定しますが、@()と空になっているので、既存のライセンスは削除されません。

 

5.ライセンスの削除
以下の例を参考にコマンドを実行します。
例:xxx@aaa.co.jpに対してMicrosoft 365 E3のライセンスを削除する場合。

$Lo = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E3'
Set-MgUserLicense -UserId "xxx@aaa.co.jp" -RemoveLicenses @($Lo.SkuId) -AddLicenses @{}

追加の時と違い、-AddLicensesと-RemoveLicensesの内容が逆転します。
▼追加
-AddLicenses @{SkuId = $Lo.SkuId} -RemoveLicenses @()

▼削除
-RemoveLicenses @($Lo.SkuId) -AddLicenses @{}

 

    まとめ

    いかがだったでしょうか。今後も様々なトラブルシューティングをはじめとした事例や対処について、ご紹介していく予定ですので、よろしければまた当ブログをご覧いただければ幸いです。

    ----------------------------------------------------------------------------------------
    本ページには主に、弊社にて実施した作業や調査の結果を記載しています。
    記載する情報には、正確かつ最新の内容を記載するよう努めておりますが、同様の結果や情報の正当性を保証するものではありません。
    本ページの情報を利用したことにより、万が一何らかの問題や損失が発生した場合でも、一切の責任を負いかねます。
    ----------------------------------------------------------------------------------------

    お問い合わせ
    PAGE TOP