第2章 Microsoft 365 ← →第4章 デバイス管理
第3章 アカウント管理
3.1 アカウント管理ツール M365AdminTools
M365AdminToolsの概要
Microsoft 365のアカウント管理は、一般的にMicrosoft 365管理センターを通じて行います。管理センターは GUI (Graphical User Interface) ベースで設計されており、ユーザーフレンドリーなインターフェースを提供します。しかし、大量のアカウントの追加、編集、削除を行う場合、GUIでの操作は効率的ではありません。
そこで、CLI(コマンドラインインターフェース)を使用してアカウントのメンテナンスを行うためのツールとして、M365AdminTools を開発しました。
M365AdminTools は、CSV ファイルを用いて Microsoft 365 のアカウントを効率的に管理するためのスクリプト群です。このツールを使用することで、大量のアカウントを一度に追加、編集、削除することが可能になります。以下に M365AdminTools の主な機能を説明します。
主な機能
-
ライセンス情報の取得
テナントで使用できるライセンス情報を取得します。 -
ライセンスの付与
アカウントにライセンスを付与します。 -
ライセンスのはく奪
アカウントに付与されたライセンスをはく奪します。 -
アカウントリストの取得
テナントに登録されているアカウントリストを取得します。 -
アカウント登録
CSVファイルを使用してアカウントの一括登録します。 -
アカウント削除
CSVファイルを使用してアカウントの削除します。 -
削除済みのアカウントを削除
削除済みのアカウントを一括削除します。 -
Temporary Access Pass の発行
アカウント登録されているユーザーに Temporary Acces Pass を発行します。
PowerShell 7.x のインストール
M365AdminTools を利用するには、PowerShell 7.x が必要です。PowerShell 7.x がインストールされていない場合は、以下の手順に従って PowerShell 7.x をインストールしてください。
- $PSVersionTable で PowerShell のバージョンを確認します。
PS> $PSVersionTable Name Value ---- ----- PSVersion 5.1.22621.3930 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.22621.3930 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
- 最新のバージョンの PowerShell を検索します。
PS> winget search Microsoft.PowerShell 名前 ID バージョン ソース ------------------------------------------------------------------ PowerShell Microsoft.PowerShell 7.4.3.0 winget PowerShell Preview Microsoft.PowerShell.Preview 7.5.0.3 winget
- 最新の PowerShell をインストールします。
PS> winget install --id Microsoft.Powershell --source winget
- インストールが完了すると [スタート] メニューで [PowerShell 7] が選択できるようになります。
- PowerShell 7 を起動して、バージョンを確認します。
Microsoft.Graph モジュールのインストール
M365AdminToolsは Microsoft.Graph モジュールを必要としますので、以下の手順に従ってMMicrosoft.Graph モジュールをインストールしてください。
- まず、PowerShellを起動します。Windowsでは [スタート] メニューから[Windows PowerShell 7] を管理者で起動します。
- PGGallary を信頼できるレポジトリに設定します。初期設定では PSGallery レポジトリは信頼されていないリポジトリして設定されています。
Get-PSRepository
を実行するとUntrsted
と表示されます。PS> Get-PSRepository Name InstallationPolicy SourceLocation ---- ------------------ -------------- PSGallery Untrusted https://www.powershellgallery.com/api/v2
- このまま Microsoft Graph PowerShell モジュールをインストールすることもできますが警告メッセージが表示されます。警告メッセージを表示させないようにするには、PSGallery の InstallationPolicy を Trusted に変更します。
PS> Set-PSRepository -Name PSGallery -InstallationPolicy Trusted PS> Get-PSRepository Name InstallationPolicy SourceLocation ---- ------------------ -------------- PSGallery Trusted https://www.powershellgallery.com/api/v2
- InstallationPolicy が Trusted に変更されたか確認します。
PS> Get-PSRepository Name InstallationPolicy SourceLocation ---- ------------------ -------------- PSGallery Trusted https://www.powershellgallery.com/api/v2
- Microsoft.Graph モジュール インストールします。
PS > Install-Module Microsoft.Graph -Scope CurrentUser
- インストールされたかを確認します。
PS > Get-Module -ListAvailable Microsoft.Graph Directory: C:\Users\XXXXXXXXX\Documents\PowerShell\Modules ModuleType Version PreRelease Name PSEdition ExportedCommands ---------- ------- ---------- ---- --------- ---------------- Manifest 2.19.0 Microsoft.Graph Core,Desk
- これにより、Microsoft Graphモジュールが正常にインストールされたことを確認できます。
Microsoft.Graph.Authentication のインストール
-
Microsoft.Graph.Authentication モジュールは、Microsoft Graph API にアクセスするための認証を提供する PowerShell モジュールです。このモジュールを使用することで、Microsoft 365 やその他の Microsoft サービスのデータに安全にアクセスし、操作することができます。後述するクライアントクレデンシャルを使用したスクリプトを使用する場合に必要となるモジュールです。
PS > Install-Module -Name Microsoft.Graph.Authentication
PowerShell の実行ポリシーの変更
Microsoft Graph PowerShellを使用するためには、PowerShellの実行ポリシーを適切に設定する必要があります。以下の手順に従って設定を行います:
- 実行ポリシーを確認します。
PS > Get-ExecutionPolicy Restricted
- 実行ポリシーが「Restricted」になっている場合、以下のコマンドを使用して「RemoteSigned」または「Unrestricted」に変更します。これにより、リモートで取得したスクリプトも実行可能になります。
PS > Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- 変更が反映されていることを確認します。
Get-ExecutionPolicy
Microsoft Graph PowerShell への接続確認
-
インストールと設定が完了したら、Microsoft Graph PowerShellに接続します。以下のコマンドを実行します。
-
このコマンドを実行すると、Microsoft 365アカウントへの認証を求められます。認証が成功すると、Microsoft Graph PowerShellを使用してアカウント管理タスクを実行できるようになります。
PS> Connect-MgGraph -Scopes "User.ReadWrite.All" Welcome to Microsoft Graph! Connected via delegated access using XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX Readme: https://aka.ms/graph/sdk/powershell SDK Docs: https://aka.ms/graph/sdk/powershell/docs API Docs: https://aka.ms/graph/docs NOTE: You can use the -NoWelcome parameter to suppress this message.
以上で、Microsoft Graph PowerShellを使用したアカウント管理の準備が整いました。
Git のインストール
M365AdminToolsはGitHubで公開されているため、M365AdminToolsをダウンロードするにはGitをインストールする必要があります。以下に、Windows OS への Git のインストール手順を示します。
- Git for Windowsの公式サイトにアクセスし、「Download」ボタンをクリックしてインストーラーをダウンロードします。
- ダウンロードしたインストーラーを実行します。
- インストーラーの指示に従ってインストールを進めます。デフォルトの設定で問題ありませんが、必要に応じて設定を調整してください。
- インストールが完了したら、「Git Bash」や「Git GUI」などのツールが使用できるようになります。
M365AdminTools のダウンロード
- PowerShell 7 を起動し、以下のコマンドを実行し、リポジトリをクローンします。
PS> cd $HOME PS> git clone https://github.com/yourusername/M365AdminTools.git
- $HOME/M365AdminTools が作成され、ディレクトリ内にスクリプトが作成されます。
- PATHの設定を追加するために、setup.ps1を実行します。
PS> cd $HOME/M365AdminTools PS> ./setup.ps1
- PATH が追加されたか確認します。[設定]→[システム]→[バージョン情報]→[システムの詳細設定] をクリックします。
- [環境変数] をクリックします。
- [Path] をクリックします。
- $HOME\Documents\M365AdminTools\scripts が追加されていることを確認します。
※画面キャプチャーは$HOME\M365AdminTools-work\scripts
になっていますが、本来は$HOME\M365AdminTools\scripts
です。
シークレットクレデンシャルを使用するための準備
Microsoft Graph PowerShell を使用して Microsoft Graph API にアクセスする際、認証が必要です。認証には、パスワード認証とシークレットクレデンシャルを使った方法の2つがあります。自動化スクリプトやバックグランドジョブで使用する場合にはシークレットクレデンシャルを使った方法を選択する必要があります。
シークレットクレデンシャルは、Entra ID アプリケーションに登録されたクライアントシークレットを使って認証する方法です。以下にシークレットクレデンシャルの作成手順を示します。
- Entra ID 管理センター にサインインします。
- 左ナビゲーションペインから [アプリケーション]→[アプリの登録] を選択します。
- [新規登録] をクリックします。
-
「名前」 は "M365AdminPowerShell" とし、「サポートされているアカウントの種類」 は [この組織でぃれt九取りの実に含まれるアカウント(Contoso のみ - シングルテナント)] とします。 [登録] をクリックします。
- 次にクライアントシークレットを作成します。 [証明書またはシークレット追加] をクリックします。
- このクライアントシークレットの説明と有効期限を設定し、 [追加] をクリックします。
- クライアントシークレットが作成されます。
IDは後から必要になってきますので必ずメモしておいてください。
※ IDは再確認することができませんので、記録し忘れた場合はクライアントシークレットを再作成してください。 - つづいてAPIのアクセス許可の設定を行います。 [API のアクセス許可] をクリックします。
-
[アクセス許可の追加] をクリックし、アクセス権の追加を行っていきます。
-
[Microsoft Graph] をクリックします。
-
[アプリケーションの許可] をクリックします。
- アクセス許可を要求するAPIを選択します、 [アクセス許可の追加] をクリックします。
-
[Contoso に管理者の同意を与えます] をクリックし、 [はい] をクリックします。
- 状態が 「Contoso に付与されました」 になれば設定は完了です。
どのAPI を許可すればよいのか
どのAPIを許可すればよいのかは、「Microsoft Graph のアクセス許可のリファレンス」 を参照してください。M365AdminToolsでアクセス許可を必要とする API 一覧を示します。
Action | API |
---|---|
ライセンスの確認 | Organization.Read.All |
ユーザーのプロファイルの読み取り、書き込み | User.ReadWrite.All |
グループのプロファイルの読み取り、書き込み | Group.ReadWrite.All |
クライアントシークレットを記入するファイルの作成
-
$HOME\M365AdminToos\scripts\credentials.json.sample
を$HOME\M365AdminToos\scripts\credentials.json
にコピーします。PS> cp $HOME\M365AdminToos\scripts\credentials.json.sample $HOME\M365AdminToos\scripts\credentials.json
メモ等で$HOME\M365AdminToos\scripts\credentials.json
を開き、"your-tenant-id"、"your-client-id"、"your-client-secret" にテナントID、クライアントID,クライアントシークレットを入力します。
作業ディレクトリの作成
$Home\M365AdminTools\work を作成し、作業ディレクトリとします。
PS> mkdir $HOME\M365AdminTools\work
PS> cd $HOME\M365AdminTools\work
ライセンスの確認
-
get-m365-license.ps1
を使用して、テナントで利用できるライセンスを表示します。PS> get-m365-license.ps1 SkuId SkuPartNumber ----- ------------- e97c048c-XXXX-XXXX-XXXX-922fbf07a370 M365EDU_A5_FACULTY 46c119d4-XXXX-XXXX-XXXX-97c66d3f909e M365EDU_A5_STUDENT
-
アカウント作成時にライセンスを付与する場合は、SkuId を登録用CSVファイルに記載します。
登録されているアカウントの確認
-
get-m365-users.ps1
コマンドを使用して、テナントに登録されているアカウント確認します。PS> get-m365-users.ps1 User list exported to RegisteredUsersList_20240717_055307.csv
- 標準では
RegisteredUsersList_YYYYMMDD_HHMMSS.csv
ファイルが作成されます。 - 出力ファイル名を指定したい場合は、
-Outputfile
オプションを使用します。PS> get-m365-users.ps1 -Outputfile users.csv
- 出力されるCSVは
アカウントを登録する
- アカウント登録用のCSVファイルを作成します。
- 1行目にはタイトルを入れます。
UserPrincipalName,Password,DisplayName,GivenName,SurName,JobTitle,EmployeeId,EmployeeType,Department,City,State,Country,StreetAddress,PostalCode,SkuId1,SkuId2,SkuId3
- 必須のプロパティは
UserPrincipalName
、DisplayName
です。それ以外は空白でも問題ありません。 -
Password
が空白の場合は、12桁のパスワードを自動生成します。 -
SkuId1~SkuId3
にget-m365-license.ps1z
で取得したSkuId
を記載します。 -
add-m365-users.ps1
コマンドを使用して、アカウントを登録します。PS> add-m365-users.ps1 -InputFile .\UserRegistration.csv Registering users User created: stu001@XXXXXXXXXXXXX.onmicrosoft.com User created: stu002@XXXXXXXXXXXXX.onmicrosoft.com User created: stu003@XXXXXXXXXXXXX.onmicrosoft.com User created: stu004@XXXXXXXXXXXXX.onmicrosoft.com User created: stu005@XXXXXXXXXXXXX.onmicrosoft.com Assigning licenses to users Licenses assined to user: stu001@XXXXXXXXXXXXX.onmicrosoft.com Licenses assined to user: stu002@XXXXXXXXXXXXX.onmicrosoft.com Licenses assined to user: stu003@XXXXXXXXXXXXX.onmicrosoft.com Licenses assined to user: stu004@XXXXXXXXXXXXX.onmicrosoft.com Licenses assined to user: stu005@XXXXXXXXXXXXX.onmicrosoft.com User creation details exported to AddedUsersList_20240717_061713.csv with UTF8 BOM encoding Completed
- 標準では
AddedUsersList_YYYYMMDD_HHMMSS.csv
ファイルが作成されます。 - 出力ファイル名を指定したい場合は、
-Outputfile
オプションを使用します。PS> add-m365-users.ps1 -Inputfile <inputfile> -Outputfile <outputfile>
アカウントを削除する
- アカウント削除用のCSVファイルを作成します。1行目がタイトル。2行目以降に削除するユーザーのUserPrincipalName を記載します。
remove-users.csv
UserPrincipalName stu001@XXXXXXXXXXXXX.onmicrosoft.com stu002@XXXXXXXXXXXXX.onmicrosoft.com stu003@XXXXXXXXXXXXX.onmicrosoft.com
-
remove-m365-users.ps1
コマンドを使用してアカウントを削除します。PS> remove-m365-users.ps1 -InputFile <inputfile> Removing users User removed: stu001@M365EDU574778.onmicrosoft.com User removed: stu002@M365EDU574778.onmicrosoft.com User removed: stu003@M365EDU574778.onmicrosoft.com User removed: stu004@M365EDU574778.onmicrosoft.com User removed: stu005@M365EDU574778.onmicrosoft.com User deletion details exported to RemovedUsers_20240717_064307.csv Completed
- 標準では
RemovedUsers_YYYYMMDD_HHMMSS.csv
ファイルが作成されます。 - 出力ファイル名を指定したい場合は、
-Outputfile
オプションを使用します。PS> remove-m365-users.ps1 -InputFile <inputfile> -Outputfile <outputfile>
削除済みのアカウントを完全削除する
-
cleanup-m365-deleated-users.ps1
コマンドは削除済みのアカウントを完全に削除します。 -
cleanup-m365-deleated-users.ps1
コマンドで削除したユーザーは復活させることはできません。PS> cleanup-m365-deleated-users.ps1
Temporary Access Pass (TAP) の発行
- TAP を発行するアカウントリストを作成します。1行目がタイトル。2行目以降に削除するユーザーのUserPrincipalName を記載します。
tap-users.csv
UserPrincipalName stu001@XXXXXXXXXXXXX.onmicrosoft.com stu002@XXXXXXXXXXXXX.onmicrosoft.com stu003@XXXXXXXXXXXXX.onmicrosoft.com
-
create-m365-tap.ps1
コマンドを使用して、TAP を発行します。PS> create-m365-tap.ps1 -InputFile <inputfile> Created user and issued Temporary Access Pass: stu001@M365EDU574778.onmicrosoft.com Created user and issued Temporary Access Pass: stu002@M365EDU574778.onmicrosoft.com Created user and issued Temporary Access Pass: stu003@M365EDU574778.onmicrosoft.com Created user and issued Temporary Access Pass: stu004@M365EDU574778.onmicrosoft.com Created user and issued Temporary Access Pass: stu005@M365EDU574778.onmicrosoft.com User creation details exported to .\UserCreationDetails_20240717_071946.csv with UTF8 BOM encoding Completed
- 標準では
UserCreationDetails_YYYYMMDD_HHMMSS.csv
ファイルが作成されます。 - 出力ファイル名を指定したい場合は、
-Outputfile
オプションを使用します。