くぜのメモ

メモのように色々なことを書いていく雑記ブログ

PowerShell で "A window handle must be configured." というエラーが出た時の回避方法

PowerShell で Exchange Online に接続しようとした際、"A window handle must be configured. See https://aka.ms/msal-net-wam#parent-window-handles" というエラーに遭遇しました。

URL が記載されていたため飛んでみたところ、親ウィンドウハンドルを用意する必要があるとのこと。

色々面倒そうだったので別の手段でできないか調べたところ、回避する方法について記載しているサイトを見つけました。ただ、すべて英語だったため、この記事では日本語でまとめたものを紹介したいと思います。

参考:https://learn.microsoft.com/en-us/answers/questions/2127369/when-i-run-the-connect-exchangeonline-to-connect-i

解決策

解決方法については3つありそうです。

  • ISE 以外の PowerShell を利用する
  • ExchangeOnlineManagement のバージョンを変更する
  • PowerShell を更新する

1.ISE 以外の PowerShell を利用する

特に指定が無いようなら、ISE 以外の PowerShell を利用することで回避可能です。

2.ExchangeOnlineManagement のバージョンを変更する

バージョンを特定のところまで下げれば回避可能です。

"3.5.1" まで下げればエラーが出ないことが確認されているので、そのバージョンに変更するコマンドを紹介します。1回すべてアンインストールして、指定のバージョンをインストールするコマンドです。

Uninstall-Module -Name ExchangeOnlineManagement -AllVersions -Force
Install-Module -Name ExchangeOnlineManagement -RequiredVersion 3.5.1 -Force

3.PowerShell を更新する

PowerShell 自体をバージョン "7.x" にすることでも回避可能です。

ただし、PowerShell v6 以降では ISE はサポートされていないため、この方法は実質不可能です。
参考:https://learn.microsoft.com/ja-jp/powershell/scripting/windows-powershell/ise/introducing-the-windows-powershell-ise

一応、ISE のバージョンを"7.x" とする方法を紹介しているサイトもあるので、どうしてもという方は探してみてください。(ここでは紹介しません。実行はあくまでも自己責任としてください。)

まとめ

以上、3点の回避方法でした。お役に立てましたら幸いです。