GIGAスクール年度更新ハンドブック | Microsoft 365  第2.3版

# はじめに

本書は [**GIGAスクール年度更新ハンドブック | Microsoft 365 第1版**](https://qiita.com/hisaho/items/16e7a194d60b620e14db) の改訂版として、実際の作業手順に則した順序に書き換えたものです。

# Microsoft 365 と Windows 端末の年度更新に必要な作業

Microsoft 365 と Windows 端末をご利用の教育機関は、次の年度更新作業が必要となります。

- **削除するアカウントリストの作成 (システム管理者が作業)**
  卒業等により削除しなければいけないアカウントリストを作成します。
- **初期化する端末リストの作成 (システム管理者が作業)**
  削除予定のユーザー(卒業する児童生徒)が使っていた初期化用端末リストを作成します。
- **Windows 端末の年度更新作業 (システム管理者が作業)**
  共有PCモードで利用している場合には年度更新作業は必要ありませんが、そうでない場合は初期化する端末リストを使って削除予定のユーザー(卒業する児童生徒)が使っていた Windows 端末を初期化して新規ユーザー(新入生)が端末を使えるようにする必要があります。
- **卒業する児童生徒のライセンスのはく奪または変更 (システム管理者が作業)**
  個人データの移行等の作業がありますので、卒業する児童生徒をすぐには削除できない場合があります。しかし、卒業する児童生徒が使用してたライセンスをはく奪もしくは変更しないと新入生にライセンスを割り当てることができません。
- **新入生用アカウントの作成とライセンスの付与 (システム管理者が作業)**
  新入生のアカウントを作成、必要なライセンスを付与します。
- **在学生用アカウントのユーザー情報の更新 (システム管理者が作業)**
  在学生用アカウントの属性値に学年やクラスなどの情報を入れている場合には、その属性値を更新します。
- **個人が所有するコンテンツの移行 (児童生徒自身が作業)** 
  ※移行手順は本書には記載しません。
  アカウントが削除されてしまうとクラウド上にある様々なコンテンツが削除されてしまいますので、個人が所有するストレージ(個人所有のOneDrive、USBメモリ、個人所有のPCなど)にコンテンツを移行します。
- **卒業する児童生徒のアカウントの削除 (システム管理者が作業)**
  削除するアカウントリストを使って、卒業する児童生徒のアカウントを削除します。

# PowerShell を使用したアカウント管理の準備

## PowerShell を使用したアカウント管理のメリット

Microsoft 365 のアカウント登録は [Microsoft 管理センター](https://admin.microsoft.com)や [Azure Active Directory 管理センター](https://aad.portal.azure.com/)から行うこともできますが、大人数のユーザーの登録、削除、更新を行う場合には、PowerShell を利用したほうが格段に楽になります。CUI(Character User Interace)での作業となりますが、慣れると GUI(Graphical User Interface) より格段に楽に作業できますので、これを機会にぜひ取り組んでみてください。

## PowerShell を利用するための準備

### Microsoft 365 を管理するための PowerShell モジュール

PowerShell で Office 365 を管理するためのモジュールには

- コマンドレッド名に AzureAD が含まれる **Graph 用 Azure AD PowerShell モジュール**
- コマンドレッド名に Msol が含まれる **Windows PowerShell 用 Microsoft Azure AD モジュール**

### モジュールをインストールできるオペレーティングシステム
以下のいずれかの OS がインストールされた端末を用意してください。
なお、用意いただいく端末のOSは **64bitバージョン** である必要があります。

- Windows 11
- Windows 10
- Windows 8.1
- Windows 8
- Windows 7 Service Pack 1 (SP1)
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2012
- Windows Server 2008 R2 SP1

の2種類があります。現時点では Graph 用 Azure AD PowerShell モジュールは、 Windows PowerShell 用 Microsoft Azure AD モジュールの機能を完全に補完するものでありませんので要件によって両バージョンを使い分ける必要があります。両バージョンの PowerShell モジュールは**同じコンピューターにインストールする**ことができます。

### PowerShell モジュールのインストール

Windows の **[スタート]** を開き、**[Windows PowerShell]** を管理者権限で開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/cf4144f4-64e2-883a-91f4-6d00c596b13e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/6bd4dd8c-e4b2-c26c-6e3a-3ecc3cf5afcf.png)

Windows Powershellのコンソール上で次のコマンドを実行し、モジュールをインストールします。

```Powershell:PowerShell
PS> Install-Module AzureADPreview
PS> Install-Module MSOnline
```

はじめて PSGallery を利用する場合には、次のメッセージが表示されますので、”Y”と入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/71be4d03-2eba-1550-3e17-c10fb3ba518f.png)


### インストールされているモジュールの確認

インストールされたモジュールの確認をするには、次のコマンドを実行します。

```PowerShell:PowerShell
PS> Get-InstalledModule
```

```:出力
Version             Name                           Repository           Description
-------             ----                           ----------           -----------
3.8.0               Az                             PSGallery            Microsoft Azure PowerShell
4.1.0               Az                             PSGallery            Microsoft Azure PowerShell
```

### モジュールのアンインストール

インストールしたモジュールをアンインストールしたい場合には次のコマンドを実行します。

```Powershell:PowerShell
PS> Uninstall-Module MSOnline
```
## PoserShellスクリプトを実行するための環境設定

PowerShell でスクリプトを書いて実行したとき、以下のエラーが表示されてスクリプトが実行できない場合があります。

```PowerShell:PowerShell
PS> .\test.ps1
.\test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\work\test.ps1 を読み込むことができませ
ん。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\test.ps1
+ ~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

```

これは Windows の初期設定では PowerShell のスクリプトの実行が実行ポリシーによって許可されていないことが原因です。次のコマンドを実行して、実行ポリシーを変更します。

```PowerShell:PowerShell
PS> PowerShell -ExecutionPolicy Unrestricted
```

実行ポリシーが変更されたか次のコマンドを実行して確認します。

```PowerShell:PowerShell
PS C:\Windows\system32>  PowerShell Get-ExecutionPoliy
Unrestricted
```

ちなみに実行ポリシーとしては以下の種類があります。

|実行ポリシー|署名あり|署名なし/ローカル|署名なし/非ローカル|説明|
|:----------|:----------:|:----------:|:----------:|:----------|
|Restricted|x|x	|x|すべてのスクリプトの実行を制限 (初期設定)|
|AllSigned|o|x|x|署名のあるスクリプトのみ実行可能|
|RemoteSigned|o|o|x|ローカル上のスクリプトと非ローカル上の署名のあるスクリプトのみ実行可能|
|Unrestricted|o|o|△|すべてのスクリプトが実行可能だが非ローカル上のスクリプトは実行時に許可が必要|
|Bypass|o|o|o|すべてのスクリプトが実行可能|

## Windows Terminal のインストール

これらから実施する作業を PowerShellコンソールで実行すると日本語が文字化けする場合がありますので、文字化けをおこさない Windows Terminal をインストールします。

Widows Terminal は Microsoft Store からインストールすることができますので、インストールしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/28e68367-9484-ef83-56e8-737cb5a093a5.png)


# 作業ディレクトリの作成

Windows Terminal を起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/51dabf10-2933-75e8-b809-8a395310ff20.png)

次のコマンドを実行して作業ディレクトリを作成します。

```PowerShell:PowerShell
PS> cd Documents　     # Docuements ディレクトリに移動
PS> mkdir work         # work というディレクトリを作成
PS> cd work            # work ディレクトリに移動
PS> mkdir bin          # Powershell スクリプトを置くディレクトリを作成
PS> mkdir 20220222     # 実際に作業する作業日名のディレクトリを作成
PS> cd 20220222　　　　 # 20220222 というディレクトリに移動
PS> pwd                # 現在のカレントディレクトリを確認

    Path
    ----
　  c:\Users\hogehoge\Documents\work\20220222
```

ディレクトリ操作で覚えておきたいコマンドを次に示します。

|コマンド|説明|
|:---|:---|
|pwd|現在いるディレクトリを表示|
|dir|現在いるディレクトリにあるファイルやディレクトリを表示|
|cd (Directory)|指定したディレクトリに移動|
|cd ..|一つ上のディレクトリに移動|
|cd c:\Users\admin\work\20200222|指定したディレクトリに移動|
|cls|画面表示をクリア|
|rmdir （Directory)|指定したディレクトリを削除|
|rm (File)|指定したファイルを削除|

# Microsoft 365 に既に登録されているユーザー情報の取得

削除ユーザーリストを作成する前に、現時点で Microsoft 365 に登録されているユーザーリストを PowerShell を使って取得してみましょう。すでに上記の作業で Windows Terminal を使って作業ディレクトリを作成していることを前提とします。

まずはじめに Connect-MsolService コマンドを使って Microsoft 365 に接続します。

```PowerShell:PowerShell
PS> Connect-MsolService  　　　　# Microsoft 365 に接続する
```

サインインの画面が表示されますので、 Microsoft 365 の管理者IDとパスワードを使ってサインインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/919828f9-f6d0-4e7d-214f-7ad3f0c7f96f.png)

サインインしたら Get-MsolUser コマンドを使って、現在登録されているユーザー情報を取得します。

```PowerShell:PowerShell
PS> Get-MsolUser -all | Export-CSV -Path Alluser-YYYYMMDD.csv -Encoding UTF8
```

作業ディレクトリにAllUsers-YYYYMMDD.csvというファイルが作成され、現在登録されているユーザー情報が記録されます。

# 削除するユーザーリストの作成

AllUsers-YYYYMMDD.csv が作成できたら、Excel 等でファイルを開き、削除するユーザーリスト(DeleteUsers-YYYYMMDD.csv)を作成します。

ファイルの書式は、１行目に **UserPrincipalName** と入力し、2行目以降に削除したいユーザーのUserPrincipalNameを入力し、CSV 形式で DeleteUsers-YYYYMMDD.csv というファイル名で保存してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/5fe16760-aa51-6f6a-999a-49f2b7ea98b3.png)

# 初期化する端末リストの作成

次に初期する端末リストを作成します。この端末リストを作成するには、削除するユーザーリストを使用します。

```PowerShell:PowerShell
PS> Import-CSV -Path DeleteUsers.vsv | foreach{Get-MsolDevice -RegisteredOwnerUpn $_.UserPrincipalName} |Export-csv -Path ResetDevices-YYYYMMDD.csv
```

カレントディレクトリに初期化する端末リストの CSV ファイル (ResetDevices-YYYYMMDD.csv )が作成されます。

# Windows 端末の年度更新作業

## なぜ Windows 端末の年度更新作業が必要なのか

Windows 端末にユーザーがログインすると　ユーザー毎の **データ** と **プロファイル** が作成されます。
- **データ** は具体的にはディスクトップやドキュメント、お気に入りなどを示します。
- **プロファイル** は具体的には、ディスクトップの画面の設定や、アプリケーションの設定を示します。

これらのデータやプロファイルは他のユーザーからはアクセスできませんが、残しておくとストレージを消費しますので、そのままにしておくと後から利用するユーザーの使えるストレージ量が少なくなりますので削除しておく必要があります。

:::note warn

**C:\Users\ユーザー名 のディレクトリを削除すればよいのですか？**

C:\Users\ユーザー名 ディレクトリを削除するだけでは、**データは削除されますがプロファイルは削除されません。**
PowerShell を使ってデータとプロファイルを同時に削除する方法もありますが、GIGAスクール端末では次に示すいくつかの方法でデータとユーザープロファイルを削除します。
:::

## Windows 端末の年度更新作業方法

ユーザーのデータとプロファイルを削除するにはいくつかの方法がありますが、ここでは4つの方法を紹介します。

- **共有PCモード**
  **共有PCモード**では、ある条件を設定してその条件を満たした場合に自動的過去のユーザーのデータとプロファイルを削除します。従ってWindows 端末の年度更新作業を実施する必要はございません。
- **Autopilotモード**
 **Autopilot リセット** は、Intune for Education から管理者が一括で端末を初期化できる方法です。**工場出荷時の設定へのリセット** との違いは削除される情報の範囲が異なります。
- **ローカル Autopilot リセット**
 Intune for Education を利用せずに、端末上で Autopilot リセットを実行する方法です。
- **工場出荷時の設定へのリセット**
 Autopilot リセットと同様に Intune for Education から管理者が一括で端末を初期化できる方法です。Autopilot リセットとの違いは削除される情報一覧をご確認ください。

各教育委員会での Windows 端末の利用・運用方法によって、どの年度更新作業が最適化は異なりますので **削除される情報一覧**等も確認して最適な方法を選択してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/78661578-10c1-b679-24a8-7df45a5d8d5d.png)
★の数が多い方法の方がお勧めです。

## それぞれの初期化方法で削除される情報一覧

それぞれのWindows 端末の年度更新作業で削除される情報一覧を次に示します。

|項目|共有PCモード|Autopilot リセット|工場出荷時の設定へのリセット|
|:---|:---:|:---:|:---:|
|ユーザーが追加したデータ|●|●|●|
|個人で行った設定|●|●|●|
|インストールされたアプリ||●|●|
|地域・言語・キーボードの設定|||●|
|Wi-Fi の設定|||●|
|プロビジョニングパッケージ|||●|
|Azure AD への登録状態の維持|||●|

## 共有 PC モードによる年度更新作業なしの PC 環境の設定

### 共有 PC モードとは

共有 PC モードは 「Windows 10 Anniversary Update (1607)で搭載された機能で、複数のユーザーによるアクセスを想定した設定がされます。
共有 PC モードでは、ディスク容量が少なくなると、アクセス順がもっとも古いアカウントから自動削除されます。またシステム管理者はこの削除を実施するタイミングを指定する閾値を設定したり、ユーザーがログオフ直後に削除するように共有 PC モードを構成できます。共有PCモードの Windows PC では、卒業生が使っていた端末を何も作業せずにそのまま新入生に渡すことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/b16585b5-7a6a-8df6-0d89-e3ceca33be61.png)

:::note warn 
共有 PCモードでは一定期間非アクティブなユーザーがいた場合、そのユーザーのデータやプロファイルが自動削除されるため、個人データを消しつつ、プロビジョニングパッケージを残した運用(Azure ADへの参加やWi-Fiの設定ずみなど)が可能です。
一方、Windows 端末への**サイン画面で毎回ユーザー名を入力する**必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/fddba93c-90bd-c4fc-e133-552a5edef31c.png)

:::
### Intune for Education による共有 PC モードの設定

共有 PC モードを有効化は Intune for Education から行うことができます。「**共有デバイス**」→「**共有私用のためにデバイスを最適化する**」を有効にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/acc604e2-1e5c-3af2-8eb9-9165a0650f1b.png)



## Microsoft Endpoint Manager による共有 PC モードの詳細設定

共有 PC モードの削除タイミングを指定する閾値の設定は Intune for Education ではできません。閾値の設定を行うには Microsoft Endpoint Manager で行います。
共有 PC モードの構成プロファイルは、**"Shared PC policy"** です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/927d9289-45ff-6261-d2d3-1653ad291360.png)
Intune for Education で共有 PC モードを有効化した場合の閾値は次の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/3ce4dea1-1a3b-06c4-847c-678dac149acf.png)
それぞれの設定値の説明を次に示します。

|設定|説明|
|:---|:---|
|共有PCモード|一度にユーザー 1 人がデバイスにサインインできるよう、共有使用向けにデバイスを最適化します。[**有効にする**]で共有PCモードになります。|
|Guestアカウント|サインイン スクリーンにゲスト オプションを作成します。ユーザー資格情報や認証は不要です。使用するたびに新しいローカル アカウントが作成されます。[**ドメイン**]にするとゲストサインインはできないくなります。|
|アカウント管理|アカウント管理サービスが共有 PC モードで有効になると、アカウントは自動的に削除されます。削除は、Active Directory、Azure Active Directory、ゲストによって作成されたローカル アカウントに適用されます。アカウント管理は、サインオフ時、およびシステムのメンテナンス期間中に、自動的に実行されます。|
|アカウントの削除|共有 PC モードでは、ディスク領域が少なくなった場合、およびアカウントの非アクティブ状態が長すぎる場合、サインアウト時にすぐにアカウントを削除するように構成できます。[**記憶域スペースのしきい値で**]、[**記憶域スペースのしきい値と非アクティブなしきい値で**]、[**ログアウト直後に**]の3つから選択できます。この設定はデフォルト設定ではなく[**記憶域スペースのしきい値と非アクティブなしきい値で**]を選択してください。|
|削除開始のしきい値(%)|アカウント マネージャーは、ディスク/記憶域スペースの合計が構成されたしきい値を下回るとすぐに、キャッシュされたアカウントの削除を開始します。継続的に削除を行ってディスク領域を解放します。アクティブでない状態が一番長く続いているアカウントから最初に削除されます。 (0-100)|
|削除停止のしきい値(%)|アカウント マネージャーは、ディスク/記憶域スペースの合計が構成されたしきい値に到達するとすぐに、キャッシュされたアカウントの削除を停止します。 (0-100)|
|非アクティブなアカウントのしきい値|サインインせずに連続で何日経過したらアカウントを削除するか。|
|ローカルストレージ|ローカル ストレージがあれば、ユーザーはデバイスのハード ドライブにファイルを保存したり、それを表示したりできます。|
|電源ポリシー|電源ポリシーでは、電源設定の変更、休止状態のオフ、カバーを閉めることでスリープするなどのすべての電源状態の切り替えのオーバーライドをユーザーが行えないようにします。|
|スリープ タイムアウト(秒)|非アクティブな状態が何秒続いたら、デバイスがスリープ モードに移行するか。時間を設定しない場合は、デバイスは 60 分後にスリープ状態に移行します。 (0-18000)|
|PC がスリープから復帰するときにサインインする|デバイスがスリープ モードから復帰するときに、ユーザーにパスワードを使ってサインインするよう要求します。|
|メンテナンス開始時間(午前 0 時からの経過分数)|
Windows Update などの自動メンテナンス タスクを実行する時刻です。既定の開始時刻は午前 0 時です (つまり 0 分)。午前 0 時からの分数で新しい開始時刻を入力すると、この設定の開始時刻を調整できます。たとえば、午前 2 時にメンテナンスを開始する場合は、値として 120 を入力します。 (0-1440)|
|教育ポリシー|学校で使用するデバイスの推奨設定|

## 初期化用デバイスグループの作成

「Autopilotリセット」や「工場出荷時の設定へのリセット」などの方法で一部のWindow 端末を初期化するには、まず初期化するためのデバイスグループを作成し、そのグループに端末を登録する必要がります。

New-MsolGroup コマンドを使って初期化するためのデバイスグループを作成します。

```PowerShell:PowerShell
PS> New-MsolGroup -DisplayName "ResetDevices-2021" -Description "2021年度の端末初期化用のデバイスグループ"
```
```:出力結果
ObjectId                               DisplayName                GroupType                  Description
--------                               -----------                ---------                  -----------
70d183c7-7f83-42d2-ab61-520767055625   ResetDevices-2021          Security                   2021年度の端末初期化用のデバイスグループ
```
## 初期化用デバイスグループへ初期化する端末の登録 (PowerShell 版)
作成したグループに初期化したい端末を登録します。

```PowerShell:PowerShell
> Import-CSV -Path ResetDevices-2021.csv | foreach{Add-MsolGroup -GroupObjectId 70d183c7-7f83-42d2-ab61-520767055625 -GroupMemberType User -GroupMemberObjectId $_.UserPrincipalName}
```

-GroupObjectId の後ろには、New-MsolGroup を実行したときに出力された ObjectId を入れてください。
これで初期化用グループにデバイスが登録されました。

## Autopilot リセットによる端末の初期化

### Autopilot リセットとは

Autopilot リセットは Intune for Education から行うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/58b8965a-23c8-90cd-d997-e4f004840af4.png)


:::note warn
Autopilot リセットで初期化した場合、プロビジョニングパッケージは削除されず、個人データだけが削除されるため、Azure AD への端末の登録やWi-Fi の設定などを再度行う必要がないため再セットアップが簡単に行えます。
一方、初期展開時に手動でインストールされたアプリがある場合にはそのアプリは削除されるため、**再インストール**する必要があります。
:::

:::note warn
Autopilot リセットを利用するためには事前に **すべての対象デバイスを Autopilot に変換** するように設定しておく必要があります。
:::

### すべての対象デバイスを Autopilot に変換 する

1. Microsoft Endpoint Manager の管理センターにWebブラウザでアクセスします。
2.画面左ペインの [**デバイス**]をクリックし、[**Windows**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/89db3fc5-6397-68bd-28ef-71909cd583bc.png)
3. [**Windows 登録**]　をクリックし、[**デプロイ プロファイル**]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/282cece6-d524-22f0-cdd5-eecd9cad9ac4.png)
4. [**すべてのデバイス Windows 10 Autopilot Profile**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/57612baf-1ebc-ac6c-8a21-d893b2544161.png)
5. [**プロパティ**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/a88c253d-99a0-e9b1-4b2b-a1820cd31408.png)
6. [**編集**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/3e7c0dcd-bae5-45e4-8886-f56ee576256e.png)
7. 「**すべてのデバイスを Autopilot に変換する**」を[**はい**]に変更し、[**レビューと保存**]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/36e14e8a-afdd-272c-e3da-76f3b02299ae.png)

### Intune for Education からの Autopilot リセット

Intune for Education の管理画面から端末を初期化します。手順は次の通りです。

1. 画面左側のペインの [**グループ**] を選択し、先ほど作成したグループを選択します。
2. 「**デバイス名**」左横のチェックボタンをクリックし、すべてのデバイスを選択します。
3. [**Autopilot リセット**] をクリックし端末を初期化します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/ded73507-5702-1dfc-856d-756bb79e0446.png)

**[注意事項]**
2.のすべてのデバイスを選択した場合にも、1ページに表示されているデバイスのみにチェックが入ります。
１ページあたりに表示されるデバイス数は最大2,000なので、初期化するデバイスが2000台以上の場合には複数の削除用グループを作成して、1グループあたり2,000台以下になるようにしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/b4a72429-965c-59b6-2bd7-96a662acc9f1.png)


## Intune for Education のバーコードスキャナーを利用した端末の初期化

初期化したい端末が手元にある場合は、WindowsPC に接続されたバーコードスキャナー利用して初期化用デバイスに端末を登録したり、Autopilot リセットを行うことも可能です。

1. Web ブラウザで [**Intune for Education の管理画面**](https://intuneeducation.portal.azure.com) にアクセスします。
2. 画面左ペインの **[バーコードスキャナー]** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/bb39edb7-7972-9a03-b358-16f72a14db51.png)
3. **[次へ]** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/eef564c4-4e55-c17c-7e76-2638dbb09046.png)
4. 「デバイスの選択」の画面で、バーコードスキャナーで端末のシリアル番号を読み込みます。パーコードスキャナーで読み込めない場合は、シリアル番号を直接入力することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/814392c7-de91-a766-a048-c0e9fa2184f2.png)
5. 初期化したいすべての端末を読み込んだら **[次へ]** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/4f6b9975-6182-f725-e43c-ae40b49ceb24.png)
6. 「**アクション**」の画面では、読み込んだデバイスで実行する操作を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/82bd5e73-860f-ec10-d9e1-7c1f25d3cef5.png)
7. [**デバイスをグループに追加**] を選択した場合には、グループを選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/1b05122e-7e8e-a118-a003-322c38c22755.png)
8. [**オートパイロットのリセット**] を選択した場合には、端末を初期化できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/c0ad06ad-cc6a-4fe7-a67b-7d751b2dc5f3.png)
9. 「**アクション**」の画面で **[次へ]** をクリックし、「**確認および送信**]の画面に移動し、[**配置**]ボタンをクリックすると、選択したアクションが実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/c4628c37-686e-07b9-04cf-783919eeb848.png)

## Autopilot リセット

Autopilot リセットが開始されるとか次のような画面が表示されます。手元の仮想マシン環境ですと約40分かかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/d32b078c-fc9a-9c30-ace4-804541f99df6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/47ca3cd7-d26a-5d14-d10a-b978d9b72ec1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/288869a0-c6d6-7d70-1239-31951aca7668.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/a0839729-20e3-db5a-6484-ac215b736345.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/6a20cf7b-bc51-c134-be0f-98e74b8bf306.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/1aed9246-5937-4733-3172-5b4e49b99f00.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/a86d8c72-cdb3-4c6f-930b-061083b13d37.png)

## Autopilot リセット後の Windows 端末の設定

**※ Provisioning Package を使って OOBE(Out-Of-Box Experience) した端末では、以下のような設定画面は表示されず、Windows のサインインの画面が表示されます。**

Autopilot リセットされた端末では、次のような画面が表示されますので、[**日本**] を選択して、[**はい**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/a86d8c72-cdb3-4c6f-930b-061083b13d37.png)
「**キーボードレイアウトはこちらでよろしいですか？**」の画面が表示されたら [**Microsoft IME**] を選択して、[**はい**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/968a6fd1-f2ba-d5cf-aeaf-a61a680c6025.png)
「**2つめのキーボードレイアウトを追加しますか？**」の画面が表示されたら [**スキップ**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/d7b46fe3-1b38-6ec5-3c62-5050cb6c6541.png)
「Windows 10 使用許諾契約」の画面が表示されたら、[**同意**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/adabe636-708b-91a4-cbea-b1b429d88e08.png)
「**デバイスを職場用にセットアップしています**]の画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/932c0365-d8d9-6221-44e5-445357780c18.png)
<--「**デバイスのプライバシー設定の選択**」の画面が表示されたら適切にプライバシー設定を行い、[**同意**] をクリックします。-->
<-- ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/abc2c6a4-f486-0e16-50a6-e2176f17eb5b.png)-->
「**成功しました! Windows はセットアップされ、使用する準備ができました。**」と表示されたらセットアップが完了です。
<--**※ Provisioning Package を使って OOBE した端末では、上記の設定画面は表示されず、次のような画面が表示されます。**-->
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/de2d720b-0c3b-8a39-f627-3787a2eec6e1.png)
リターンキーを押すと次の画面が表示されますので、新しい利用者はこの画面で Microsoft 365 のアカウントとパスワードを入力してサインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/72b36c77-fe30-0703-5a4e-1bdc63b5f50c.png)
サインインしない場合は、電源ボタンを選んでシャットダウンしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/c4b58bf3-286c-ed79-3c08-dad1123a76ad.png)

## ローカル Autopilot リセット

### ローカル Autopilot リセットとは

 [**「Autopilotリセットによる端末の初期化」**](#Autopilotリセットによる端末の初期化) では、Intune for Education を使用してリモートから端末を初期化する方法を解説しました。この方法はシステム管理者が簡単に端末の初期化を行えるといメリットがありますが、端末に電源が入っていなかったり、インターネットにつながっていなかった場合には、Autopilot リセットの命令が端末に届かないので、すぐには端末は初期化されず、次に端末が起動してインターネットに接続され、Autopilot リセットの命令が届いたときに、端末の初期化が実行されます。したがってどの端末が初期化され、どの端末が初期化されていないのかは、システム管理者がログを見ないとわかりませんので、各学校で端末の初期化状態を確認するのが難しいはずです。

 **ローカル Autopilot リセット** は各端末上で Autopilot リセットを実施できる方法です。標準設定では、**ローカル Autopilot リセット** は実施できないように設定されていますので、 Intune for Education の設定を変更して **ローカル Autopilot リセット** を実施できるようにします。

### ローカル Autopilot リセットを有効化する

1. [Intune for Education の管理ポータル](https://intuneeducation.portal.azure.com) に Web ブラウザでアクセスします。
2. 画面左ペインの [**グループ**] をクリックします。
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/4192aa9d-a368-df2f-ac00-7a11df069359.png)
3. ローカル Autopilot リセットを有効化するデバイスグループを選択します。ここでは一例として [**すべてのデバイス**] を選択したとして話を進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/48153aed-e375-2d15-493b-50e9db0b0846.png)
4. 画面左ペインの [**Windows デバイスの設定**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/fc3fa016-6d8c-4035-da4a-76d8e063b1d0.png)
5. 「**登録**」の下に「**ローカル Autopilot リセットを有効にする**」 という項目がありますので、これを [**有効にする**] にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/7b18fab0-10fd-328b-dfe4-727242cf9faa.png)
6. 最後に [**保存**] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/b289ba86-06f0-114e-23cb-aad386106214.png)

## ローカル Autopilot リセットの実施

1. Windows サインインの画面で、[Ctrl]キーと[Windows]キーと R を同時に押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/81d3c495-8279-fa74-a916-bed092dc69e3.png)
2. 管理者アカウントのID、パスワードでサインインし、リセットプロセスを開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/216735ac-bfbf-98a5-917e-54db0b0ea1a9.png)
 





# 卒業する児童生徒のライセンスのはく奪または変更 

卒業する児童生徒のアカウントを削除せずに新入生アカウントを作成した場合、一時的にライセンスが足りなくなる場合があります。しかし、卒業する児童生徒のアカウントからすべてのライセンスをはく奪してしまうと、個人が所有するデータ移行の際にもとのアカウントでサービスにサインインできなくなってしまいます。そこで、ここでは無償で利用できる **Office 365 A1** ライセンスのみを使用できるようライセンスの変更を行っていきます。
教育委員会毎に Microsoft 365 の契約は異なりますのでここでは3つのパターンを想定して解説します。

|付与されているライセンス|ライセンスのはく奪もしくは変更|
|:----|:----|
|Microsoft 365 A5|Office 365 A1 にライセンスを変更する|
|Microsoft 365 A3|Office 365 A1 にライセンスを変更する|
|Office 365 A1 + Microsoft 365 GIGA PROMO| GIGA PROMOライセンスのみをはく奪する|

## 使用しているライセンスの確認

現在 Microsoft 365 のテナントで使用しているライセンスを確認するには、**Get-MsolAccoutSku** コマンドを使用します。

Windows Terminal から**Get-MsolAccoutSku** コマンドを実行します。

```PowerShell:PowerShell
PS> Get-MsolAccountSKu
```
以下のようなエラーが出る場合は、**Connect-MsolService** コマンドを実行して、Microsoft 365 に接続してください。

```:エラー出力
Get-MsolAccountSku : You must call the Connect-MsolService cmdlet before calling any other cmdlets.
発生場所 行:1 文字:1
+ Get-MsolAccountSku
+ ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [Get-MsolAccountSku], MicrosoftOnlineException
    + FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.MicrosoftOnlineException,Microsoft.Onlin
   e.Administration.Automation.GetAccountSku
```

実行結果は以下のようになります。
※契約内容によって表示されるライセンス名、ライセンス数は変わってきます。

```:Get-MsolAccountSKU の実行結果
AccountSkuId                                 ActiveUnits WarningUnits ConsumedUnits
------------                                 ----------- ------------ -------------
contso:M365EDU_A3_STUUSEBNFT                 100000      0            99028
contso:INTUNE_EDU                            458         0            2
contso:ENTERPRISEPACKPLUS_FACULTY            308         0            127
contso:WINDOWS_STORE                         25          0            0
contso:STANDARDWOFFPACK_STUDENT              2000000     0            133161
contso:M365EDU_A5_FACULTY                    300         0            25
contso:FLOW_FREE                             10000       0            1159
contso:STANDARDWOFFPACK_STUDENT_DEVICE       40108       0            0
contso:CCIBOTS_PRIVPREV_VIRAL                10000       0            1
contso:POWERAPPS_VIRAL                       10000       0            1
contso:POWER_BI_STANDARD                     1000000     0            13
contso:STANDARDWOFFPACK_FACULTY_DEVICE       2986        0            0
contso:TEAMS_EXPLORATORY                     0           100          0
contso:M365EDU_A3_FACULTY                    7400        0            7194
contso:STANDARDWOFFPACK_FACULTY              1000000     0            13171
contso:M365_EDU_GIGA_PROMO                   38666       0            38510
````

GIGAスクールで利用されている主なライセンスは次の通りです。

|ライセンス名|説明|
|:---|:---|
|テナント名:M365EDU_A5_FACULTY|教職員用 Microsoft 365 A5|
|テナント名:M365EDU_A5_STUUSEBNFT|児童生徒用 Microsoft 365 A3|
|テナント名:M365EDU_A3_FACULTY|教職員用 Microsoft 365 A5|
|テナント名:M365EDU_A3_STUUSEBNFT|児童生徒用 Microsoft 365 A3|
|テナント名:M365_EDU_GIGA_PROMO|Microsoft 365 GIGA PROMO|
|テナント名:STANDARDWOFFPACK_FACULTY|教職員用 Office 365 A1|
|テナント名:STANDARDWOFFPACK_STUDENT|教職員用 Office 365 A1|

## 卒業する児童生徒のライセンスのはく奪または変更

卒業する児童生徒のライセンスのはく奪または変更するパターンは3種類あります。

|No|付与されているライセンス|変更後のライセンス|
|---:|:---|:---|
|1|テナント名:M365EDU_A5_STUUSEBNFT|テナント名:STANDARDWOFFPACK_STUDENT|
|2|テナント名:M365EDU_A3_STUUSEBNFT|テナント名:STANDARDWOFFPACK_STUDENT|
|3|テナント名:STANDARDWOFFPACK_STUDENT+テナント名:M365_EDU_GIGA_PROMO|テナント名:STANDARDWOFFPACK_STUDENT|

それぞれのパターンでライセンスをはく奪または変更する場合には次のコマンドを実行します。

```PowerShell:パターン1
PS> Import-CSV -Path DeleteUsers-YYYYMMDD.csv | foreach{Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLisense "テナント名:M365EDU_A5_STUUSEBNFT" -AddLicenses "テナント名:STANDARDWOFFPACK_STUDENT"}
```

```PowerShell:パターン2
PS> Import-CSV -Path DeleteUsers-YYYYMMDD.csv | foreach{Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLisense "テナント名:M365EDU_A3_STUUSEBNFT" -AddLicenses "テナント名:STANDARDWOFFPACK_STUDENT"}
```
```PowerShell:パターン3
PS> Import-CSV -Path DeleteUsers-YYYYMMDD.csv | foreach{Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLisense "テナント名:M365_EDU_GIGA_PROMO"}
```

# 新入生用アカウントの作成とライセンスの付与

## ユーザー登録用のCSVファイルの作成

ユーザー登録用のCSVファイル(AddUsers-Input-YYYYMMDD.csv)は、1行目にタイトル、2行目以降に登録するユーザー情報を入力します。1ファイルで登録できるユーザーは1,000名です。1,000名以上登録したい場合には、複数の登録用のファイルを作成します。

```:登録用CSVファイルの1行目
UserPrincipalName,Password,DisplayName,FirstName,LastName,JobTitle,City,businessPhone,Department,PostalCode,streetAddress,MobilePhone,State,Contry,UsageLocation,AccountSkuLd
```

登録する情報は次の通りです。

|ラベル名|必須|説明|
|:--|:--|:--|
|UserPrinipalName|◎|Microsoft 365 サービスへのサインインに使用されるアカウント名|
|DisplayName|◎|Microsoft 365 サービスで使用される表示名|
|Password|×|パスワードを指定しない場合、ランダムなパスワードがユーザー アカウントに割り当てられます|
|FirstName|×|姓|
|LastName|×|名|
|JobTitle|〇|職位(例:Student or Teacher)|
|City|〇|学校名|
|businessPhone|〇|小学校1年時の入学年度(例:2014)|
|Department|×|学年(例:小1, 中2, 高3)|
|PostalCode|×|クラス(A, B, C)|
|streetAddress|×|部活動|
|MobilePhone|×|担当科目(教員の場合)|
|State|×|都道府県|
|Country|×|国名(例:Japan)|
|UsageLocation|◎|"JP"固定|
|AccountSkuId|〇|ライセンス名(Get-MsolAccountSku コマンドで取得したもの)|

◎：必須
〇：必須ではないが、登録しておくと後々役に立つ
×：必須ではない(未登録でも問題ない)

## ユーザー登録用 PowerShell スクリプトの作成

メモ帳などで次のPowerShellスクリプトを作成してC:\Users\ユーザー名\Documents\work\bin\AddUsers1.ps1 に保存します。

```PowerShell:AddUsers1.ps1
Import-CSV -Path $ARGS[0] -Encoding UTF8 |foreach{New-MsolUser -UserPrincipalName $_.UserPrincipalName -City $_.City -Country $_.Country -Department $_.Department -Fax $_.Fax -FirstName $_.FirstName -LastName $_.LastName -MobilePhone $_.MobilePhone -Office $_.Office -PhoneNumber $_.PhoneNumber -PostalCode $_.PostalCode -State $_.State -StreetAddress $_.StreetAddress -Title $_.Title  -UsageLocation $_.UsageLocation -LicenseAssignment $_.AccountSkuId} |Export -CSV -Path ARGS[1] -Encoding UTF8
```

## PowerShellスクリプト(AddUsers1.ps1)によるユーザーの登録

AddUsers1.ps1 スクリプトを使用して、ユーザーを登録します。

```PowerSHell:PowerShell
PS> C:\Users\ユーザー名\Documents\work\bin\AddUsers1.ps1 AddUsers-Input-YYYYMMDD.csv AddUsers-Output-YYYYMMDD.csv
もしくは
PS> ..\bin\AddUsers1.ps1 AddUsers-Input-YYYYMMDD.csv AddUsers-Output-YYYYMMDD.csv
```

登録用のCSVファイルにパスワードが記載されていない場合には、ユーザー登録結果ファイル(AddUsers-Output-YYYYMMDD.csv)に登録時に自動生成されたパスワードが記録されます。

## 初回サインイン時のパスワード強制変更を無効化する

**AddUser1.ps1**スクリプトで作成されたユーザーは初めてサインインした際にパスワード変更が求められます。初回サインイン時の強制パスワード変更を無効化したい場合には、**-ForceChangePassword $false** オプションを追加します。

```PowerShell:AddUsers2.ps1(初回サインイン時の強制パスワード変更を無効化)
Import-CSV -Path ARGS[0] -Encoding UTF8 |foreach{New-MsolUser -UserPrincipalName $_.UserPrincipalName -City $_.City -Country $_.Country -Department $_.Department -Fax $_.Fax -FirstName $_.FirstName -LastName $_.LastName -MobilePhone $_.MobilePhone -Office $_.Office -PhoneNumber $_.PhoneNumber -PostalCode $_.PostalCode -State $_.State -StreetAddress $_.StreetAddress -Title $_.Title  -UsageLocation $_.UsageLocation -LicenseAssignment $_.AccountSkuId -ForceChangePassword $false} |Export -CSV -Path ARGS[1] -Encoding UTF8
```

## 数字のみのパスワードを設定できるようにする

Microsoft 365 のパスワードポリシーは

- 下記4種のうち3種を使用する
 - A – Z
 - a – z
 - 0 – 9
 - @ # $ % ^ & * – _ ! + = [ ] { } | \ : ‘ , . ? / ` ~ “ ( ) ;
- 8文字以上256文字以内
- 変更したひとつ前のパスワードは利用できない

となっています。数字のみのパスワードを設定できるようにしたい場合には、**-StrongPasswordRequired $false** オプションを追加します。

```PowerShell:AddUsers3.ps1(初回サインイン時の強制パスワード変更を無効化+数字のみのパスワードを可)
Import-CSV -Path ARGS[0] -Encoding UTF8 |foreach{New-MsolUser -UserPrincipalName $_.UserPrincipalName -City $_.City -Country $_.Country -Department $_.Department -Fax $_.Fax -FirstName $_.FirstName -LastName $_.LastName -MobilePhone $_.MobilePhone -Office $_.Office -PhoneNumber $_.PhoneNumber -PostalCode $_.PostalCode -State $_.State -StreetAddress $_.StreetAddress -Title $_.Title  -UsageLocation $_.UsageLocation -LicenseAssignment $_.AccountSkuId -ForceChangePassword $false} |Export -CSV -Path ARGS[1] -Encoding UTF8
```

# 在学生用アカウントのユーザー情報の更新

在学生用アカウントの属性値に学年やクラスなどの情報を入れている場合には、その属性値を更新する必要があります。更新用のCSVファイルを作成するには、現在登録されているユーザー情報(AllUsers-YYYYMMDD.csv) をコピーして作成するとよいでしょう。

変更したいユーザーのみを抽出し、ModUsers-Input-YYYYMMDD.csv ファイルを作成します。

# 更新用 PowerShell スクリプトの作成
メモ帳などで次のPowerShellスクリプトを作成してC:\Users\ユーザ名\Documents\work\bin\ModUsers.ps1 に保存します。

```PowerShell:ModUsers.ps1
Import-CSV -Path $Args[0] -Encoding UTF8 | foreach-Object {New-MsolUser -UserPrincipalName $_.UserPrincipalName -DisplayName $_.DisplayName -City $_.City -Country $_.Country -Department $_.Department -Fax $_.Fax -FirstName $_.FirstName -LastName $_.LastName -MobilePhone $_.MobilePhone -Office $_.Office -PhoneNumber $_.PhoneNumber -PostalCode $_.PostalCode -State $_.State -StreetAddress $_.StreetAddress -Title $_.Title -UsageLocation $_.UsageLocation -LicenseAssignment $_.AccountSkuId} | Export-CSV -Path $Args[1] -Encoding UTF8
```

## PowerShellスクリプト(ModUsers.ps1)によるユーザー情報の更新

次のコマンドを実行してユーザー情報を更新します。

```PowerShell:PowerShell
PS> C:\Users\ユーザ名\Documents\work\bin\ModUsers.ps1 ModUsers-Input-YYYYMMDD.csv ModUsers-Output-YYYYMMDD.csv
もしくは
PS>　..\bin\Modusers.ps1 ModUsers-Input-YYYYMMDD.csv ModUsers-Output-YYYYMMDD.csv
```

# ユーザーの削除

## ユーザー削除する前にライセンスを削除しよう

ユーザーの削除作業を実施する前にライセンスの削除を実施することで、本来削除してはいけないユーザーを洗い出すことができます。次のコマンドを実施して、削除予定のユーザーの Office 365 A1 ライセンスのはく奪します。

```PowerShell:PowerShell
PS> Import-CSV -Path DeleteUsers-YYYYMMDD.csv | foreach{Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLisense "テナント名:M365EDU_A5_STUUSEBNFT}" 
```

もし本来削除すべきでないユーザーがおり、Office 365 サービスが利用できなくなった場合は、次のコマンドを実施してそのユーザーに再度ライセンスを割り当てます。

```PowerShell:PowerShell
PS> Set-MsolUserLicense -UserPrincipalName ライセンスを割り当てたいユーザーのUserPrincipalName -AddLisense "ライセンス名" 
```

## ユーザー削除用 PowerShell スクリプトの作成

メモ帳などで次のPowerShellスクリプトを作成してC:\Users\ユーザー名\Documents\work\bin\DelUsers.ps1 に保存します。

```PowerShell:DelUsers.ps1
Import-Csv -Path $ARGS[0] | foreach {Remove-MsolUser -UserPrincipalName $_.UserPrincipalName -Force} | Export-Csv -Path $ARGS[1] -Encoding UTF8
```

## PowerShellスクリプト(DelUsers.ps1)によるユーザーの削除
次のコマンドを実行してユーザーを削除します。

```PowerShell:PowerShell
PS> C:\Users\admin\Documents\work\bin\DelUsers.ps1 Delusers-Input-YYYYMMDD.csv Delusers-Output-YYYYMMDD.csv
もしくは
PS> ..\bin\deluser.ps1 Deluser-Input-YYYYMMDD.csv Deluser-Output-YYYYMMDD.csv
```

このコマンドで削除したユーザーは完全削除はされず、削除済みのユーザーとして Microsoft 365 上に残っています。[Azure Active Directory のポータルサイト](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview) にアクセスすることで、削除済みのユーザーを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/e75e7bb3-5a0e-a8e9-033c-06d98414cfa5.png)

この画面からユーザーを選択し、**[完全に削除]**、**[ユーザーの復活]** ボタンをクリックすることで、ユーザーの完全削除や復活が行えます。完全削除したユーザーは復活できないので注意してください。
削除済みのユーザーは30日後に自動削除されます。削除日は[Azure Active Directory のポータルサイト](https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Overview)からも確認することができます。

# ユーザーの完全削除

**Get-MsolUser** コマンドを使って削除済みのユーザーのリストを作成します。

```PowerShell:PowerShell
PS> Get-MslUser -ReturnDeletedUsers -all | Export-CSV -Path DeletedUsers-Input-YYYYMMDD.csv -Encoding UTF8
```

## 完全削除用PowerShell スクリプトの作成

メモ帳などで次のPowerShellスクリプトを作成してC:\Users\ユーザー名\Documents\work\bin\FullDelUsers.ps1 に保存します。

```PowerShell:FullDelUsers.ps1
Import-Csv -Path $ARGS[0] | foreach {Remove-MsolUser -UserPrincipalName $_.UserPrincipalName -Force -RemoveFromRecycleBin} | Export-Csv -Path $ARGS[1] -Encoding UTF8
```

## PowerShellスクリプト(FullDelUsers.ps1) によるユーザーの完全削除
FullDelUsers.ps1 スクリプトを使用して、ユーザーを完全削除します。

```PowerShell:PowerShell
PS> C:\Users\admin\Documents\work\bin\FullDelUsers.ps1 DeletedUsers-Input-YYYYMMDD.csv DeletedUsers-Output-YYYYMMDD.csv 
または
PS>　..\bin\FullDelUsers.ps1 DeletedUsers-Input-YYYYMMDD.csv DeletedUsers-Output-YYYYMMDD.csv 
```

# おわりに
このドキュメント通りにやってみたがうまく動かない、ドキュメントの誤記を見つけた等がございましたら、筆者宛て <nahisaho@microsoft.com> にご連絡ください。
いきなり実環境で実施するのは怖いのでデモ環境でハンズオンを実施してほしい場合は、[**ここから**](https://forms.office.com/r/ny2Wwx9ZwL) お申し込みください。

# トライブルシューティング

## ユーザーやグループ(Teamsのチーム)が作成できなくなった時に確認すべきこと

Microsoft 365 を運用しているとユーザーやグループ(Teamsのチーム)が作成できなくなるといった問題が起きることがあります。これはほとんどの場合、テナントに割り当てられていたオブジェクト数をすべて使い切ってしまったことが原因です。一般的にカスタムドメインを登録していないテナントでは**5万オブジェクト**、カスタムドメインを登録したテナントでは**30万オブジェクト**まで利用できます。ユーザーやグループを1つ作成すると1オブジェクト消費されます。**削除されたユーザーも完全にユーザーを削除していない場合には1オブジェクト消費しています。**
現在利用しているテナントでどれくらいオブジェクトを消費しているかは、Graph Explorer を使用して確認することができます。

### Graph Explorer による消費オブジェクト数の確認
1. Webブラウザで [Graph Explorer](https://developer.microsoft.com/en-us/graph/graph-explorer) にアクセスします。
2. Graph Explorer が表示されたら、左ペインの**[Sign in to Graph Explorer]**をクリックし、Microsoft 365 の管理者アカウントでサインインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/089dba03-3450-3cdb-c54b-08d4f7c11a76.png)
3. バージョンは **[beta]**を選択し、クエリに "https://graph.microsoft.com/beta/organization?$select=directorySizeQuota" と入力し、**[Run query]** ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/b2035c10-64a0-a4e8-203b-4fc5f37e8968.png)
4. 画面下の**「Response preview]**に現在消費しているオブジェクト数とテナントに割り当てられたオブジェクト数数が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78535/940bc3b2-17bd-c808-b00c-ef070c6dbe58.png)

### オブジェクト数が足りなくなった場合
オブジェクト数が足りなくなった場合は、Microsoft 365ポータルからオブジェクト数を増やすようサービスリクエストを上げてください。