読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。
Microsoft 365 のユーザー追加、ライセンスの割り当て、グループ管理などは、管理センターの GUI でも操作できます。ただ、同じ作業の繰り返しや大量の処理になると、PowerShell で自動化したくなります。この記事では、Microsoft 365 を PowerShell で管理するための環境として、Microsoft Graph PowerShell SDK をインストールし、テナントに接続して動作を確認するまでの手順をまとめます。
- Microsoft Graph PowerShell SDK の役割と、これまでのモジュールとの違い
- PowerShell 7 の準備と、モジュールのインストール
- Connect-MgGraph での接続(スコープと同意)と、Get-MgUser での確認
Microsoft Graph PowerShell SDKとは?
以前は、Microsoft 365(Microsoft Entra ID)を PowerShell で管理するのに「Azure AD PowerShell」や「MSOnline」のモジュールが使われていました。これらのモジュールは非推奨になっていて、現在は「Microsoft Graph PowerShell SDK」を使います。
Microsoft Graph PowerShell SDK は、Microsoft Graph API を呼び出すためのモジュール群です。Microsoft Graph API は、Entra ID のユーザーやグループだけでなく、Exchange、SharePoint、Teams などの Microsoft 365 サービスの API を 1 つのエンドポイント(窓口)にまとめたものです。そのため、1 回のサインインで、さまざまなサービスの情報を扱えます。
| 項目 | Microsoft Graph PowerShell SDK |
|---|---|
| 対応する PowerShell | PowerShell 7 以降(推奨)。Windows PowerShell 5.1 でも使える |
| 対応する OS | Windows、macOS、Linux |
| コマンドの名前 | Get-AzureADUser → Get-MgUser のように「Mg」が付く |
| 権限 | あらかじめ許可されておらず、使う権限(スコープ)を接続時に要求して同意する |
セットアップの準備をしよう!
PowerShell で Microsoft 365 の管理を始めるために、次の 2 つを準備します。
| 準備するもの | 内容 |
|---|---|
| PowerShell 7 | Windows 10/11 に最初から入っているのは Windows PowerShell 5.1 で、PowerShell 7 は別にインストールする。macOS や Linux でもインストールすれば使える |
| 管理者のアカウント | Microsoft 365 テナントの管理者ロールを持つアカウント。この記事のように、権限(スコープ)に組織全体で同意する場合は、全体管理者など、同意を与えられるロールが必要 |
PowerShell 7 のインストール方法は、Microsoft の公式ドキュメントを参考にしてください。
Windows PowerShell 5.1 で使うときは、.NET Framework 4.7.2 以降と最新の PowerShellGet が必要です。また、スクリプトの実行ポリシーを RemoteSigned 以下の制限にしておく必要があります(STEP 2 の補足)。
PowerShellを使ってMicrosoft365へ接続するまでの手順
Microsoft Graph PowerShell SDK をインストールし、Microsoft 365 に接続するまでの手順です。
PowerShell 7 を開く
Windows のスタートメニューで「PowerShell」と検索し、表示された PowerShell 7 (x64) を開きます。検証では、右側のメニューの「管理者として実行」で開きました。
次の STEP 2 のように、モジュールを自分のユーザーだけにインストールする(-Scope CurrentUser)場合は、管理者として開かなくてもインストールできます。すべてのユーザー向けにインストールする(-Scope AllUsers)場合は、管理者として開く必要があります。
検索結果には「Windows PowerShell」も表示されますが、これは Windows に最初から入っている 5.1 です。PowerShell 7 とは別のもので、モジュールもそれぞれにインストールが必要です。
Microsoft Graph PowerShell SDKモジュールをインストールする
Microsoft 365 を管理するためのコマンド(コマンドレット)を使うには、まずモジュールをインストールします。PowerShell のウィンドウで次のコマンドを実行します。
PowerShell 7
Install-Module Microsoft.Graph -Scope CurrentUser
| コマンド・パラメータ | 意味 |
|---|---|
| Install-Module | PowerShell Gallery(PSGallery)からモジュールをインストールする |
| Microsoft.Graph | Microsoft Graph PowerShell SDK のモジュール(v1.0 の API 用)。インストールすると、ユーザー用、グループ用などのサブモジュールがまとめて入る |
| -Scope CurrentUser | 今のユーザーだけにインストールする。管理者権限は不要 |
| -Scope AllUsers | すべてのユーザーにインストールする。管理者権限が必要 |
実行すると、「Untrusted repository」(信頼されていないリポジトリ)と確認のメッセージが表示されます。インストール元の PSGallery は Microsoft が運営する公式のリポジトリですが、既定では「信頼されていない」設定になっているため、このメッセージが出ます。Y を入力して Enter キーを押し、インストールを続けます。
この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
PowerShell 7.5.11PS C:\Users\hirotano> Install-Module Microsoft.Graph -Scope CurrentUser 2Untrusted repositoryYou are installing the modules from an untrusted repository. If you trust this repository, change itsInstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from'PSGallery'?3[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Install-Module … | PowerShell 7.5.1 で、モジュールのインストールを実行した |
| 2 | Untrusted repository | インストール元の PSGallery が「信頼されていない」設定になっているので、続けるかを確認している |
| 3 | (default is "N"): Y | Y(Yes)を入力して続ける。何も入力せずに Enter を押すと、既定の N(No)になり、インストールされない |
インストールが終わったら、Get-InstalledModule Microsoft.Graph でインストールされたバージョンを確認できます。
Microsoft.Graph は 40 を超えるサブモジュールをまとめてインストールするので、時間がかかります。ユーザー管理だけなど、使う機能が決まっている場合は、Microsoft.Graph.Users のように必要なサブモジュールだけをインストールする方法もあります(接続に使う Microsoft.Graph.Authentication は自動でインストールされます)。
また、Windows PowerShell 5.1 で Install-Module やモジュールの読み込みがエラーになる場合は、実行ポリシー(Execution Policy)が制限されている可能性があります。実行ポリシーは、不正なスクリプトが実行されるのを防ぐための仕組みです。Get-ExecutionPolicy で現在の設定を確認し、Restricted になっていれば Set-ExecutionPolicy RemoteSigned -Scope CurrentUser で変更します。
Microsoft 365に接続する(Connect-MgGraph)
モジュールのインストールが終わったら、Microsoft 365 のテナントに接続します。接続には Connect-MgGraph を使います。
PowerShell 7
Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All"
-Scopes には、このセッションで使いたい権限(スコープ)を指定します。この例で要求しているのは次の 2 つです。
| スコープ | できること |
|---|---|
| User.Read.All | すべてのユーザーのプロフィールを読み取る(同意画面の「Read all users’ full profiles」) |
| Group.ReadWrite.All | すべてのグループを読み取り・変更する(同意画面の「Read and write all groups」) |
セキュリティの面では、必要な権限だけを要求するのが基本です。たとえば、ユーザーの情報を読み取るだけなら User.Read.All だけで足ります。どのコマンドにどのスコープが必要かは、Microsoft のドキュメントの各コマンドのページで確認できます。
コマンドを実行すると Web ブラウザが起動し、Microsoft 365 のサインイン画面が表示されます。管理者のアカウントでサインインします。初めて接続するときや、要求するスコープが変わったときは、アクセス許可の同意画面が表示されます。
| 1アプリ | Microsoft Graph Command Line Tools Microsoft Corporation |
| 2このアプリで必要なアクセス許可 | Read all users’ full profiles Read and write all groups Maintain access to data you have given it access to |
| 3組織の代理として同意する | ☑ |
| No. | 項目 | 内容 |
|---|---|---|
| 1 | アプリ | Microsoft Graph PowerShell SDK は「Microsoft Graph Command Line Tools」というアプリとしてサインインする |
| 2 | アクセス許可 | -Scopes で指定した 2 つと、アクセスを維持するための許可(サインインを続けるために使う) |
| 3 | 組織の代理として同意する | チェックを入れると、組織の全ユーザーに代わって同意する。今回はテナント全体に同意する前提でチェックを入れる |
| 4 | 承諾 | クリックすると同意され、PowerShell の接続が完了する |
このサインインは、サインインしたユーザーの権限で操作する方式(委任されたアクセス)です。実際にできる操作は、同意したスコープと、サインインしたユーザーの管理者ロールの両方で決まります。スコープに同意していても、ユーザーのロールで許されていない操作はできません。
あとから別の権限が必要になった場合は、新しいスコープを付けて Connect-MgGraph をもう一度実行します。
接続を確認する
接続できたかを、簡単なコマンドで確認します。次のコマンドで、テナントに登録されているユーザーの一覧を取得します。
PowerShell 7
Get-MgUser
PS C:\Users\hirotano> Get-MgUser 1DisplayName Id Mail----------- -- ----(ユーザーの情報は伏せています)
| No. | 表示 | 意味 |
|---|---|---|
| 1 | DisplayName、Id、Mail | ユーザーの表示名、ID(オブジェクト ID)、メールアドレス。続けてユーザー プリンシパル名(UPN)なども表示される |
ユーザーの一覧が表示されれば、接続は成功です。接続中のアカウントや同意済みのスコープは Get-MgContext で確認できます。作業が終わったら、Disconnect-MgGraph でサインアウトします。
Get-MgUser をオプションなしで実行すると、結果の最初のページだけが返ります。ユーザーが多いテナントで全員を取得するには Get-MgUser -All とします。
また、サインインの情報(トークン)はキャッシュされるため、PowerShell を閉じても Disconnect-MgGraph を実行するまではサインインした状態が続きます。共用の端末では、作業の最後に必ずサインアウトします。
セットアップ後にできること
セットアップが終われば、Microsoft 365 のユーザーやグループの管理を中心に、多くの作業を PowerShell で行えます。たとえば、次のような作業です。
| 作業 | 使うコマンドの例 |
|---|---|
| 新しいユーザーの作成 | New-MgUser |
| ユーザー情報の変更(役職、部署など) | Update-MgUser |
| ユーザーの無効化・削除 | Update-MgUser -AccountEnabled:$false、Remove-MgUser |
| パスワードの変更 | Update-MgUser -PasswordProfile |
| グループの取得・管理 | Get-MgGroup、New-MgGroup |
| ライセンスの取得・割り当て | Get-MgSubscribedSku、Set-MgUserLicense |
どのコマンドも、実行には対応するスコープが必要です。たとえば、ユーザーを作成・変更するには User.ReadWrite.All を付けて接続し直します。
Exchange Online、SharePoint Online、Teams の設定をより細かく管理するには、Microsoft Graph PowerShell SDK だけでなく、それぞれのサービス用のモジュールを使う場合があります。
| サービス | モジュール | 接続コマンド |
|---|---|---|
| Exchange Online | ExchangeOnlineManagement | Connect-ExchangeOnline |
| SharePoint Online | Microsoft.Online.SharePoint.PowerShell | Connect-SPOService |
| Microsoft Teams | MicrosoftTeams | Connect-MicrosoftTeams |
うまくいかないとき
| 状態 | よくある原因 | 確認すること |
|---|---|---|
-Scope AllUsers でインストールできない | PowerShell を管理者として開いていない | 管理者として開き直すか、-Scope CurrentUser にする |
| インストールしたのにコマンドが見つからない | 別の PowerShell(Windows PowerShell 5.1 と PowerShell 7)にインストールした | 使う PowerShell で Get-InstalledModule Microsoft.Graph を実行する |
| Windows PowerShell 5.1 でモジュールを読み込めない | 実行ポリシーが Restricted | Get-ExecutionPolicy の結果 |
| 同意画面で承諾できない、管理者の承認が必要と表示される | 組織全体の同意を与えられるロールがない | サインインしたアカウントの管理者ロール |
| コマンドで権限不足(Insufficient privileges)のエラー | そのコマンドに必要なスコープを要求していない | Get-MgContext のスコープ、コマンドのドキュメントの必要な権限 |
まとめ
| 手順 | コマンド・操作 | ポイント |
|---|---|---|
| STEP 1 | PowerShell 7 を開く | Windows に最初から入っている 5.1 とは別。-Scope CurrentUser なら管理者として開かなくてよい |
| STEP 2 | Install-Module Microsoft.Graph -Scope CurrentUser | 「Untrusted repository」には Y で続ける |
| STEP 3 | Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All" | 必要なスコープだけを要求し、同意画面で承諾する |
| STEP 4 | Get-MgUser | ユーザーの一覧が出れば接続成功。終わったら Disconnect-MgGraph |
コメント