
Exchange Online の管理で、PowerShell を利用するシナリオがあると思います。
その中でよく迷うのが、
- PowerShell ISE
- 通常の PowerShell(Windows PowerShell / PowerShell 7)
本記事では、Exchange Online の視点で両者の違いを整理します。
- PowerShell ISE とは?
- 通常の PowerShell とは?
- Exchange Online の観点での決定的な違い
- 現在の推奨スタイル:ISE → VSCode + PowerShell 拡張機能
- Powershell ISE を利用することはできるか?
- WAM を無効化し、Exchange Online に接続するコマンドレット
PowerShell ISE とは?
PowerShell ISE(Integrated Scripting Environment)は、
PowerShell スクリプトを作成・実行するための統合開発環境です。
主な特徴
- エディタと実行画面が一体
- 複数行スクリプトが書きやすい
- 補完や色分け表示が見やすい
- Windows に標準搭載(旧世代ツール)
学習用途では便利ですが、現在は Microsoft により非推奨となっています。
通常の PowerShell とは?
通常の PowerShell とは、主に以下を指します。
- Windows PowerShell 5.1
- PowerShell 7(pwsh)
Exchange Online 管理では、
PowerShell 7 + ExchangeOnlineManagement モジュール が公式推奨構成です。
Exchange Online の観点での決定的な違い
① PowerShell ISE は Exchange Online 非推奨
Exchange Online 管理で使用する ExchangeOnlineManagement モジュールは、
PowerShell ISE での利用が推奨されていません。
- 接続エラーが発生する
- 認証画面が表示されない
- 将来的な動作保証がない
② モダン認証・MFA と ISE の相性問題
Exchange Online は OAuth(モダン認証)と MFA が必須です。
Connect-ExchangeOnline
この接続時、ISE では以下の問題が起きやすくなります。
- ブラウザ認証画面が出ない
- ログインで固まる
- 意図しない認証エラー
③ PowerShell 7 は Exchange Online 向けに最適化されている
- 高速で安定している
- Microsoft の公式ドキュメントが前提としている
- 今後も継続的にアップデートされる
PowerShell ISE と通常の PowerShell の違い(まとめ)
|
項目
|
PowerShell ISE
|
通常の PowerShell(コンソール)
|
|---|---|---|
|
UI(画面)
|
GUI エディタ付き
|
文字だけのコンソール
|
|
スクリプト編集
|
タブ・色分け・補完が使いやすい
|
メモ帳的で編集は弱い
|
|
実行
|
画面上で F5 実行・分割画面
|
コマンド入力のみ
|
|
目的
|
スクリプト作成・学習向け
|
実運用・最新環境向け
|
|
開発状況
|
すでに非推奨(メンテ終了)
|
PowerShell 5/7 で現役
|
|
OS
|
Windows のみ
|
Windows / macOS / Linux
|
現在の推奨スタイル:ISE → VSCode + PowerShell 拡張機能
Microsoft の公式推奨は、スクリプト開発は VSCode、実行は PowerShell コンソールです。
VSCode が推奨される理由
-
ISE 互換キーバインドがある
-
自動補完が超強力
-
デバッグ機能が充実(ブレークポイント、変数ウォッチ)
-
PowerShell 7 を完全にサポート
Powershell ISE を利用することはできるか?
ExchangeOnline Management Module のバージョン 3.7.0 以降では、Powershell ISEとの互換性に関する問題が報告されており、認証ウィンドウが表示されずに接続ができないという事象が確認されています。
ExchangeOnline Management Module のバージョン 3.7.0 以降では、Web アカウントマネージャー(WAM) の認証が実装されており、ISE では WAM での認証がエラーとなります。
エラー内容
A window handle must be configured. See https://aka.ms/msal-net-wam#parent-window-handles
なお、Connect-ExchangeOnline のパラメーターとして "DisableWAM" を追加することで WAM を無効化し、Exchange Online に接続することが可能です。
一度、PowerShell ISE を起動し、Connect-ExchangeOnline 実行してエラーになると、その Powershell ISE のセッションに WAM 利用することが紐づけられるため、PowerShell ISE を再起動してから以下のコマンドレットを実行してください。
WAM を無効化し、Exchange Online に接続するコマンドレット
[実行例]
Connect-ExchangeOnline -UserPrincipalName admin@contoso.com -DisableWAM
※ admin@contoso.com をグローバル管理者のユーザID(UPN)に置き換えて実行してください。