Microsoft

Microsoft Graph PowerShell V2.26を使ったMicrosoft 365ユーザー作成時のエラー原因と対応

こんにちは、吉田です!
今回は私がMicrosoft Graph PowerShell V2.26を使ってユーザーを作成した際に出たエラーの原因とその対応方法についてご紹介していこうと思います。

使用環境

今回私がユーザーを作成する際に使用した環境は以下になります。

  • Windows Power Shell 5.1.2
  • Microsoft Graph PowerShell SDK:v2.26.1

実行したコマンド

実行したコマンドは以下になります。


Install-Module Microsoft.Graph

Connect-MgGraph -Scopes "Directory.ReadWrite.All", "User.ReadWrite.All", "Organization.Read.All”

# Import the CSV file
$users = Import-Csv -Path "C:xxxxxxxx.csv"

# Create a password profile
$PasswordProfile = @{
    Password = 'Password123'
    }
 
# Loop through each user in the CSV file
foreach ($user in $users) {
     # Create a new user
     $newUser = New-MgUser -DisplayName $user.DisplayName  -UserPrincipalName $user.UserPrincipalName -MailNickname $user.MailNickname -PasswordProfile $passwordProfile -UsageLocation $user.UsageLocation -AccountEnabled 

     # Assign a license to the new user
     $e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'xxxxxxxxx'
     $skuId = $e5Sku.SkuId
     Set-MgUserLicense -UserId $newUser.Id -AddLicenses @{SkuId = $skuId} -RemoveLicenses @()
}

発生したエラー

上記のコマンドで発生したエラー内容は以下になります。

Set-MgUserLicense : One or more parameters of the operation 'assignLicense' are missing from the request payload. The missing parameters are: removeLicenses.

このエラー内容は日本語に翻訳すると、「Set-MgUserLicense コマンドでライセンスを割り当てようとしましたが、必要なパラメーター removeLicenses が送信されていません。」という意味になります。
しかし、実行コマンドを見て頂いたらわかるように、removeLicenses-RemoveLicenses @()を渡しているので正常に動作されるはずです。

原因

思い当たる箇所は全て修正したのですが、それでもエラー内容は変わらず同じでした。
そこで私はMicrosoft サポートに解決を依頼しました。その結果原因は・・・

Microsoft Graphの2.26バージョンのバグ 

だったことがわかりました…。私もまさかGraphのバグだったとは思いもせず、完全に盲点でした。
ではそのバグの解決方法をご紹介します。

解決方法

解決方法はMicrosoft Graph のバージョンを2.25にダウングレードする事です!
その手順を以下に記載していきます。

【手順】

①Windows [スタート] 画面より、Windows PowerShell を [管理者として実行] します。
②下記のコマンドを実行し、インストールされている Microsoft Graph のバージョンを確認します。

Get-InstalledModule

③下記のコマンドを実行して Microsoft Graph を完全削除します
【1 回目のコマンド】現在インストールされているモジュール名一覧を取得します。

$allgraphmodules = (Get-InstalledModule -Name "Microsoft.Graph.*").Name

【2 回目のコマンド】バージョン2.6.0のみを対象にアンインストールします。

foreach ($module in $allgraphmodules) {Uninstall-Module -Name "$module" -RequiredVersion "2.6.0" -Force
}

③のコマンドでもしエラーがでてしまった場合は以下のコマンドを実行してみてください。

Get-InstalledModule -Name 'Microsoft.Graph.*' | Where-Object { $.Version -eq '2.26.1' } | ForEach-Object {
Write-Host "削除中: $($.Name)" -ForegroundColor Yellow
Uninstall-Module -Name $_.Name -AllVersions -Force
}

④上記コマンドでアンインストールを実行後、Get-InstalledModuleを実行して2.26.1が表示されない事を確認してください。もしまだ残っている場合は個別にアンインストールが必要になるので以下のコマンドを実行してみてください。(緑の箇所は残っているグラフごとに変更してくださいね)

Uninstall-Module Microsoft.Graph.Authentication -force

⑤2.26.1 のアンインストールが完了しましたら、以下のコマンドを実行し別バージョンの Microsoft Graph をインストールしてください。

Install-Module Microsoft.Graph -RequiredVersion 2.25

以上で手順は終了です!
私はこの方法でダウングレードをして最初に記載したコマンドでユーザーを作成することができました!

おわりに

いかがでしょうか。意外と簡単に解決できたので私はびっくりしました笑
今回は日本の方でこの内容について書いてらっしゃる方が見つからなかったので書いてみました。
ブログ投稿が初めてで拙い箇所もあると思いますが、同じようなバグでお困りの方のお役に立てれば幸いです。最後まで読んで頂きありがとうございました!

TOP