Microsoft 365・入退社時のユーザー管理を効率的に行う

Microsoft 365 のサービスでは購入したライセンス数に応じて料金を支払い、ライセンスを割り当てられたユーザーがサービス(Microsoft 365 Apps、OneDrive、SharePoint、Teams、Exchange など)を利用できます。
このため管理者によるユーザーアカウントの作成や削除、ライセンスの割り当て・割り当て解除などのユーザー管理は Microsoft 365 を利用する上での重要な作業です。特に社員の入社・退社時のアカウント作成/削除・ライセンスの割り当て/割り当て解除は確実かつ効率的に行いたい作業です。

このようなユーザー管理作業は Microsoft 365 管理センターで行うことができますが、それ以外に PowerShell を利用した管理も行うことができます。

PowerShell はコマンドプロンプトと同じようなコマンド実行環境(シェル)ですが、Windows だけでなく Linux や macOS 上でも利用でき、より便利な機能を多数持っています。PowerShell の詳細は以下をご覧ください。

Power Shell の利用には以下のようなメリットがあります。

  • Microsoft 365 管理センターに表示されない追加情報を表示できる
  • PowerShell でのみ可能な機能と設定を構成できる
  • 一括操作を行える
  • 複数の操作対象(ユーザーなど)がある場合、事前に csv ファイルで対象一覧を作成できるので、間違いが起こりにくい
  • データをフィルター処理できる
  • データの印刷や保存ができる
  • コマンドの実行履歴をログとして記録でき、証跡が残せる
  • Start-Transcript (Microsoft.PowerShell.Host) - PowerShell | Microsoft Learn

同じような操作を繰り返し行う場合や多数のユーザーを対象とした操作を行う場合は、事前に csv ファイルでリストを作成して対象ユーザーを指定でき、ログを証跡として残せる PowerShell での作業をお勧めします。
この記事では社員の入社・退社時のユーザー管理について、効率的かつ確実に行う方法を解説します。

今回紹介している PowerShell での操作についての詳細は、以下を参照してください。

ユーザーの一括追加

新規採用者の入社時など、一度に多くのユーザーを作成したい場合があります。
このような場合のユーザーの一括追加は、PowerShellを利用して以下の手順で行えます。

PowerShell を利用する場合は、後記の「Microsoft 365 PowerShell の利用準備」の手順に従って、あらかじめ PowerShell モジュールのインストールを行ってください。

  1. 以下のような列を持つ csv ファイルを作成します
    UserPrincipalName,MailNickname,DisplayName,GivenName,Surname,Password

    ここでは説明を簡単にするためにユーザー作成時に指定できるすべての項目を指定していません。指定できる主な属性は以下の通りです。
    ※UserPrincipalName、MailNickname、DisplayName、Password は必須です。

    ・ユーザー名:UserPrincipalName
    ・姓:Surname
    ・名:GivenName
    ・表示名:DisplayName
    ・役職:JobTitle
    ・部署:Department
    ・事業所:OfficeLocation
    ・事業所の電話:BusinessPhones
    ・携帯電話:MobilePhone
    ・FAX 番号:FaxNumber
    ・番地:StreetAddres
    ・市区町村:City
    ・都道府県:State
    ・郵便番号:PostalCode
    ・国/地域:Country

    また、パスワードは以下の複雑さの要件を満たす必要があります。
    ・8文字以上
    ・英字の大文字、小文字、数字、記号のうち、最低でも3つの種類を含める

    人事情報のシステムなどで既に追加するユーザーの名前や割り当てるメールアドレスなどのデータが存在している場合は、そのデータを csv ファイルに加工して利用すれば、情報の誤りなどを防ぐことができます。

  2. PowerShell コンソールで以下のコマンドを実行して、必要なモジュールの読み込みを行います。
    Import-Module -Name Microsoft.Graph.Users
  3. 以下のコマンドを実行して、Microsoft 365 に接続します。
    Connect-MgGraph -Scopes "Organization.Read.All","User.ReadWrite.All"
  4. 別ウィンドウで Microsoft 365 へのサインインを求められますので、管理者権限のある Microsoft 365 アカウントでサインインします。
  5. はじめて PowerShell から接続する場合、以下の確認画面が表示されます。
    表示されたら [承諾] をクリックしてください。
  6. ウェルカム メッセージが表示されます。
  7. 以下のコマンドを実行して、読み込む csv ファイルを指定します
    $path = "<作成した CSV ファイル名を含んだ保存先のパス>"
  8. 以下のコマンドで、読み込んだ csv ファイルを元にユーザーを作成します。
    Import-Csv -Path $path | ForEach-Object {New-MgUser -AccountEnabled
    -UsageLocation "JP" -UserPrincipalName $_.UserPrincipalName
    -DisplayName $_.DisplayName -MailNickname $_.MailNickname
    -PasswordProfile @{"Password"=$_.Password; ForceChangePasswordNextSignIn=$true}}

    ※コマンドを折り返して表示していますが、全体で1行です。

    ユーザーが作成されました。
    作成されたユーザーは、Microsoft 365 管理センターでも確認できます。

    この例では -AccountEnabled オプションで作成したアカウントを有効にし、-UsageLocation オプションで場所を日本(JP)に設定し、ForceChangePasswordNextSignIn=$true で作成されたアカウントで最初にサインインする際のパスワード変更を求めています。

  9. PowerShell での作業を終了する場合は、以下のコマンドを実行してサインアウトします。
    ※引き続き PowerShell での作業を行う場合は実行不要です。
    Disconnect-MgGraph

    注意
    New-MgUser コマンドを使用して新しいユーザーを作成する場合は、管理コンソールからの作成のように同時にライセンスの割り当てを行うことができません。PowerShell でのライセンスの割り当て方法は次節を参照してください。

ライセンスの変更(割り当て・割り当て解除)

PowerShell で作成したライセンス未割り当てのユーザーに一括してライセンスを割り当てたり、複数のユーザーのライセンスを変更・割り当て解除したりすることができます。
ユーザーの作成と異なり、既存のユーザーにライセンスを割り当てたり変更したりする場合、csv ファイルで対象ユーザーの一覧を指定するには PowerShell を利用する必要があります。

  1. ライセンスを変更(割り当て・割り当て解除)したいユーザーの UserPrincipalName 列がある csv ファイルを用意します。
    ※必要な列は UserPrincipalName だけですので、PowerShell でのユーザー追加で使った csv ファイルをそのまま利用できます。新規に作成しても構いません。
  2. PowerShell によるユーザー作成の手順「2.」「3.」を行って、PowerShell から Microsoft 365 テナントに接続します(ユーザー作成から引き続き作業している場合は不要です)。
  3. テナントで利用可能なライセンスの ID を調べます。
    以下のコマンドを実行してください。
    Get-MgSubscribedSku | Select -Property Sku*, ConsumedUnits -ExpandProperty PrepaidUnits | FL

    ここで表示される SkuId を割り当てるライセンスの ID として使用します。
    ※製品名と ID の一覧は以下を参照してください。

  4. 以下のコマンドで、割り当てるライセンスを変数 $License に格納します。
    $License = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "c42b9cae-ea4f-4ab7-9717-81576235ccac"}
    ※ここでは上のスクリーンショットで確認した Microsoft 365 E5 Developer ライセンスの SkuId c42b9cae-ea4f-4ab7-9717-81576235ccac を指定しています。
  5. 以下のコマンドを実行して、読み込む csv ファイルを指定します
    $path = "<作成した CSV ファイル名を含んだ保存先のパス>"
  6. 以下のコマンドを実行して、ライセンスの割り当てを行います。
    Import-Csv $path | ForEach-Object { Set-MgUserLicense -UserId $_.UserPrincipalName -AddLicenses @($License) -RemoveLicenses @() }
  7. 割り当てられたライセンスは、Microsoft 365 管理センターでも確認できます。
  8. PowerShell での作業を終了する場合は、以下のコマンドを実行してサインアウトします。
    ※引き続き PowerShell での作業を行う場合は実行不要です。
    Disconnect-MgGraph

    ライセンスを変更する場合は、以下のように Set-MgUserLicense コマンドの -RemoveLicenses オプションに割り当て解除するライセンスの SkuId を記述します。
    $License = New-Object -TypeName
    Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "c42b9cae-ea4f-4ab7-9717-81576235ccac"}

    $path = "<作成した CSV ファイル名を含んだ保存先のパス>"

    Import-Csv $path | ForEach-Object { Set-MgUserLicense -UserId $_.UserPrincipalName -AddLicenses @($License) -RemoveLicenses @("c7df2760-2c81-4ef7-b578-5b5392b571df" ) }

    ※この例では Office 365 Enterprise E5(c7df2760-2c81-4ef7-b578-5b5392b571df)のライセンスを解除して、Microsoft 365 E5 Developer ライセンスを割り当てています。割り当て解除だけ行う場合は、-AddLicenses オプションに空要素を指定します(「@()」と指定する)。

ユーザーの無効化と削除

退職者や長期求職者など、Microsoft 365 の利用を停止したいユーザーがある場合、ユーザーの無効化(サインインのブロック)と削除の二つの方法があります。

  • ユーザーの無効化ではユーザーのライセンスやデータは保持したまま、サインインのみ禁止します。ライセンスやデータが必要ない場合は、別途ライセンスの解除を行ってください。
  • ユーザーの削除では、ライセンスの割り当て解除が行われ、データも30日間の猶予期間を過ぎると自動的に削除されます。猶予期間の間は、削除したユーザーを復元することもできます。

ユーザーのデータに保持ポリシーが構成されている場合は、ポリシーの設定が優先されます。

ユーザーの無効化や削除でも csv ファイルを使って対象ユーザーの一覧を指定するには PowerShell を利用する必要があります。

  1. ブロックまたは削除したいユーザーの UserPrincipalName 列がある csv ファイルを用意します。
    ※必要な列は UserPrincipalName だけですので、PowerShell でのユーザー追加で使った csv ファイルを編集して利用できます。新規に作成しても構いません。
  2. PowerShell によるユーザー作成の手順「2.」「3.」を行って、PowerShell から Microsoft 365 テナントに接続します(他の操作から引き続き作業している場合は不要です)。グループをクリックします。
  3. 以下のコマンドを実行して、読み込む csv ファイルを指定します
    $path = "<作成した CSV ファイル名を含んだ保存先のパス>"
  4. csv ファイルにリストされたユーザーのブロックを行うには、以下のコマンドを実行します。
    Import-Csv $path | ForEach-Object { Update-MgUser -UserId $_.UserPrincipalName -AccountEnabled:$false }
  5. ブロックの状態は Microsoft 365 管理センターでも確認できます。
  6. csv ファイルにリストされたユーザーを削除する場合は、以下のコマンドを実行します。
    Import-Csv $path | ForEach-Object { Remove-MgUser -UserId $_.UserPrincipalName }
  7. ユーザーの削除は Microsoft 365 管理センターにもすぐに反映されます。
  8. PowerShell での作業を終了する場合は、以下のコマンドを実行してサインアウトします。
    ※引き続き PowerShell での作業を行う場合は実行不要です。
    Disconnect-MgGraph

退職者・離職者への対応

退職者や離職者のライセンスやアカウントはここまで説明した手順で割り当て解除・削除が行えます。しかし組織としては法令の定めやコンプライアンスなどの要件で、退職者・離職者が保存していたデータ類を保全しなければならない場合があります。
Microsoft 365 の既定の設定では、サービスのライセンスが無くなると、以下のデータが30日後に自動的に削除されます。

  • OneDrive for Business のデータ
  • Exchange Online のメールボックス

これらのデータを保持する方法を簡単に説明します。

OneDrive for Business のデータ

OneDrive for Business のデータはユーザーに紐づくものなので、ユーザーのアカウントが削除されると自動的にデータも削除がトリガーされます。トリガーから 30 日後にごみ箱に移動され、93日間保持されたのち、完全に削除されます。

既定では、Microsoft 365 上でユーザーにマネージャー(上司)が指定されている場合、ユーザーが削除されるとユーザーのマネージャーにユーザーの OneDrive へのアクセス権が自動的に付与されます。
マネージャーには削除されたユーザーの OneDrive にアクセスできること、30日後にデータが削除されることを通知するメールが送信されます。このメールは削除の 7日前にもリマインダーとして送信されます。
通知を受け取ったマネージャーは、削除されたユーザーの OneDrive にアクセスして、以下のいずれかの方法でデータを保全できます。

  • データをダウンロードする
  • データを自分の OneDrive for Business に移動する
  • データを適切な SharePoint Online ライブラリに移動する

マネージャー未設定のユーザーのアカウントを削除した場合、誰もユーザーの OneDrive for Business へのアクセス権を持たないので、いったん削除を取り消して、マネージャーを設定後に改めてアカウントを削除してください。
またごみ箱に移動した後でデータを復元するには PowerShell を利用する必要があります。

OneDrive のデータの保持と削除・復元について詳しくは、以下を参照してください。

Exchange Online のメールボックス

  • 非アクティブなメールボックス

    Exchange Online のメールボックスは「非アクティブなメールボックス」に変換して、アカウントの削除後もデータを保持することができます。
    アカウントが削除されたユーザーのメールボックスを非アクティブなメールボックスに変換するには、メールボックスに対して保持ポリシーを構成しておく必要があります。

    保持ポリシーで Exchange Online を対象に「特定の期間アイテムを保持」または「アイテムを無期限に保持する」が指定された場合、アカウントが削除されたユーザーのメールボックスは自動的に非アクティブなメールボックスに変換され、指定された期間(または無期限)保持されます。

    保持ポリシーと非アクティブなメールボックスについての詳細は、以下を参照してください。

    Exchange Online での保持ポリシーの利用には Microsoft 365 Business Premium・Microsoft 365 E3/E5 ライセンスまたは Exchange Online Archiving アドオンが必要です。

  • 共有メールボックス

    退職者・離職者のメールボックスを保持する別の方法として、ユーザーのメールボックスを「共有メールボックス」に変換することもできます。
    共有メールボックスにはライセンスを割り当てる必要が無いので、退職者・離職者に割り当てていたライセンスを削除しても、共有に変換したメールボックスは削除されません。ただし退職者・離職者のアカウントを削除することはできません。サインインを禁止したライセンス割当の無いアカウントとして保持する必要があります。

    1.ユーザーのメールボックスを共有メールボックスに変換するには、以下の手順を行います。
    2.Exchange 管理センター(https://admin.exchange.microsoft.com/)にアクセスします。
    3.[受信者] ⇒ [メールボックス] を選択し、共有メールボックスに変換したいユーザーのメールボックスをクリックします。
    4.[その他] タブで [共有メールボックスに変換] をクリックします。

    5.確認画面が表示されますので、[確認] をクリックします。
    6.共有メールボックスに変換できたら、ユーザーのライセンスを削除できます。
    ※アカウントを削除しないでください。

    共有メールボックスへの変換の詳細と、共有メールボックスからユーザーメールボックスに戻す方法については以下を参照してください。

  • コンテンツ検索

    Microsoft Purview 電子情報開示ソリューションの一部である「コンテンツ検索」を行って、ユーザーのメールボックスの内容を pst ファイルとしてダウンロードすることもできます。
    コンテンツ検索についての詳細は、以下を参照してください。

    Exchange Online を対象としたコンテンツ検索の利用には Microsoft 365 Business Premium・Microsoft 365 E3/E5 ライセンスが必要です。

Microsoft 365 PowerShell の利用準備

Microsoft 365 の管理作業を PowerShell で行うことができます。
PowerShell を利用するための方法として、以下の2つがあります。

  • 管理者が利用するコンピューターに必要な PowerShell モジュールをインストールする
  • Azure Cloud Shell を利用する

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

管理者が利用するコンピューターに必要な PowerShell モジュールをインストールして、管理作業を開始するための準備作業は以下の通りです。

  • PowerShell 実行ポリシーの変更

    モジュールのインストールを実行するために PowerShell 実行ポリシーを一時的に変更します。

    1.PowerShell コンソールを管理者として実行します
    2.以下のコマンドを実行します
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

    これで実行ポリシーが RemoteSigned に変更されます。
    作業が終了したら、以下のコマンドを実行してポリシーを戻してください。
    Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

  • Microsoft Graph PowerShell SDK のインストール

    PowerShell コンソールで以下のコマンドを実行します
    Install-Module Microsoft.Graph -Scope CurrentUser
    以下のようにプロバイダーのインストールの確認が表示されたら、「NuGetプロバイダーをインストールしてインポートしますか?」と表示されていることを確認して、y を入力します。

    「信頼されていないリポジトリ」の表示がされたら、「'PSGallery' からモジュールをインストールしますか?」と表示されていることを確認して、y を入力します。
    ※インストール完了まで少し時間がかかります。

    プロンプトに戻ったら、インストールが完了です。PowerShell に接続して作業を開始する準備ができました。

Azure Cloud Shell

Azure Cloud Shell は Microsoft 365 管理センターから起動できる PowerShell コンソールです。Microsoft 365 管理センターへのサインインが行われているので改めてサインインを求められることがなく、必要な PowerShell モジュールもインストール済みなので、起動するだけですぐに管理作業を開始できます。

Cloud Shell は管理センター画面右上のアイコンをクリックして起動できます。

ユーザー情報 csv ファイルなどの PC で作成したファイルを Cloud Shell で利用する際は、Cloud Shell にファイルをアップロードする必要があります。詳しくは以下を参照してください。

Cloud Shell を利用するには、管理する Microsoft 365 と同じテナントの Azure サブスクリプションが必要です。
Azure サブスクリプションの契約については当社担当営業までご相談ください。

まとめ

Microsoft 365 のユーザー管理・ライセンス管理は、コスト管理面でもセキュリティとコンプライアンスの面でも重要な作業です。多くの作業は Microsoft 365 管理センターの Web ページ上で行えますが、管理センターでの作業には以下のような問題があります。

  • 同じ作業の単純な繰り返しが発生する
  • 作業証跡を残すのが手間となる(操作ごとにスクリーンショットを採取して保存など)
  • 作業手順の第三者チェックが行いにくい

こうした問題点は、PowerShell を利用した作業を行うことで改善できます。PowerShell は利用開始に準備が必要ですが、コマンド自体はコピー&ペーストで実行でき、またすべての作業証跡(ログ)を自動的に保存することもできます。
ごみ箱からのアイテムの復元のように PowerShell を利用しないと行えない操作もありますので、ぜひ PowerShell での Microsoft 365 管理を試してみてください。

また退職者・離職者のデータの保全では Microsoft 365 Business Premium・Microsoft 365 E3/E5 ライセンスがあると利用可能な便利な機能もあります。セキュリティやコンプライアンスの向上にはこれらのライセンスへのアップグレードもご検討ください。
Microsoft 365 ライセンスの購入やアップグレードについてのご質問、ご相談は当社担当営業までお気軽にご連絡ください。

Microsoft 365 の各プランの詳細については、以下をご参照ください。

※韋駄天ログイン後にクリックをお願い致します。

CSPの記事