社畜の所業

社畜の所業

Office365の機能について解説をしていきたいと思います。このブログの情報をご活用いただければ幸いです。たまに他の情報も取り入れていきたいと思います。

【Office365参考書】PowershellでV2モジュールのインストールと先進認証でExchangeOnlineに接続するには?

f:id:it-bibouroku:20210305161848p:plain

基本認証が今後、廃止されることが決定されているため、今後は、V2モジュールを使って先進認証でExchangeOnlineに接続する必要があります。

 

V2モジュールのインストール方法と先進認証でExchangeOnlineに接続する手順をご紹介していきたいと思います。

 

 

 

 V2 モジュールで Exchange Online に接続する 

V2モジュールをインストール

Windows PowerShell を右クリックし管理者として起動します。 

  

Install-Module -Name ExchangeOnlineManagement 

  

※ "インストールしますか?" のメッセージが表示されましたら 

"y" を入力し、"enter" キーを押下します。 

  

上記コマンドを実行し、EXO V2 モジュールのインストールが完了したのち、以下にご案内の手順にてExchange Online への接続してください。

  

なお、"Install-Module -Name ExchangeOnlineManagement" は Exchange Online への接続が初回の場合のみ必要なコマンドです。 

※ 2 回目以降の接続時には不要となります。 

  

先進認証でExchangeOnlineに接続する手順

以下コマンドレットを実行し EXO V2 モジュールを読み込みます 

  

Import-Module ExchangeOnlineManagement 

  

  1. 続けて次のコマンドを実行します。

  

$UserCredential = Get-Credential 

※ 実行すると資格情報が求められますため、ID とパスワードで認証を行います。 

  

  1. 次のコマンドを実行します。

  

Connect-ExchangeOnline -Credential $UserCredential -ShowProgress $true 

  

  

接続が行われると、以下の警告が表示された後にコマンドを実行が実行できる状態となります。 

  

--- 警告文章抜粋 --- 

  

The module allows access to all existing remote PowerShell (V1) cmdlets in addition to the 9 new, faster, and more reliable cmdlets. 

  

|--------------------------------------------------------------------------| 

|    Old Cmdlets                    |    New/Reliable/Faster Cmdlets       | 

|--------------------------------------------------------------------------| 

|    Get-CASMailbox                 |    Get-EXOCASMailbox                 | 

|    Get-Mailbox                    |    Get-EXOMailbox                    | 

|    Get-MailboxFolderPermission    |    Get-EXOMailboxFolderPermission    | 

|    Get-MailboxFolderStatistics    |    Get-EXOMailboxFolderStatistics    | 

|    Get-MailboxPermission          |    Get-EXOMailboxPermission          | 

|    Get-MailboxStatistics          |    Get-EXOMailboxStatistics          | 

|    Get-MobileDeviceStatistics     |    Get-EXOMobileDeviceStatistics     | 

|    Get-Recipient                  |    Get-EXORecipient                  | 

|    Get-RecipientPermission        |    Get-EXORecipientPermission        | 

|--------------------------------------------------------------------------| 

 

【Office365参考書】MigrationWizを利用してデータを移動する場合にEWSスロットリングポリシーを拡張したほうがいい?

f:id:it-bibouroku:20200305151118j:plain

サードパーティ製のツールであるMigrationWizを使用してメールボックスなどのデータ移行をおこなうシナリオがあります。

MigrationWizは、クラウドサービスやオンプレミスサーバーなどからOffice365へデータを移行する場合に利用します。

※Office365テナント間のデータ移行でも利用できます。

 

大量のデータを移行する場合、EWSスロットリングポリシーに抵触してしまう可能性が懸念されます。

その場合、以下の値を拡張することでEWSスロットリングポリシーに抵触することを回避することができます。

 

 

EwsMaxBurst  

増加したリソースを EWS ユーザーが消費できる時間の長さを定義し、これを超えたら調整を行うようにします。 

これは、ミリ秒単位で測定されます。 

  

EwsRechargeRate  

予算時間中に EWS ユーザーの予算を回復する速度 (予算の増加単位を定義します。  

  

EwsCutoffBalance  

 EWS ユーザーのリソース消費制限を定義し、これを超えたら特定のコンポーネントの操作を実行できないよう、ユーザーを完全にブロックするようにします。 

 

なお、EWS のスロットリングポリシーの拡張については、以前はデータセンターに依頼が必要でしたが、現在はテナントより申請を行うことが可能になりました。 

そのため、データ移行を実施いただく前に下記の手順により EWS の スロットリングポリシーの拡張を実施ください。 

  

 

EWS の スロットリングポリシー変更手順 

  1. 管理者アカウント(全体管理者、または Exchange 管理者) にて、Microsoft 365 管理センターを開きます。
  2. 左ペインのメニューより [サポート] - [新規お問い合わせ] とクリックします。
  3. 画面右より 「サポートが必要ですか?」メニューが表示されますので、"問題を簡潔に説明して下さい" 欄に以下内容を入力します。

  

EWS Throttling 

  

  1. 「診断の実行」項目欄に以下の説明が表示されますので、[テストを実行] をクリックします。

  

説明文 : Exchange Web サービス (EWS) の調整ポリシーとデータ移行に問題が発生していることを把握しています。 

いくつかのテストを実行して、サポートしましょう。 

  

  1. テストの完了までお待ち下さい。

   ※ 1 分ほどで完了します。 

  

  1. テストが完了いたしますと、以下の説明分が表示されます。

  

説明文 : Exchange Web サービスは調整済みです。 

データの移行を計画または実行している場合、一時的に Exchange EWS 調整ポリシーを使用して、移行を完了できるようにします。 

  

  1. 期間 (日数)欄のプルダウンメニューより、拡張を行う期間(30、60、90 日)を選択します。
  2. 「私は、[設定の更新] をクリックすると、上記の変更がテナントへと変更されることを承諾します。」のチェックボックスにチェックを入れ、[設定の更新] をクリックします。
  3. 成功!

Exchange Web サービス (EWS) 調整ポリシーの更新が開始されました。通常は、15 分以内に更新が完了します。と表示が行われれば、拡張完了となります。 

 

【Office365参考書】ExchangeOnlineの最終アクセス日時を取得するには?

f:id:it-bibouroku:20200305151118j:plain

ExchangeOnlineにログインした日時を取得したい場合、Windows PowerShell コマンドを利用して、最終ログイン日時(LastLogOnTime)の値を取得して確認する方法があります。

しかしながら、LastLogOnTime の値の更新については、様々な操作によって更新が行われます。 

以下に情報の取得方法と併せて、どういった場合に本値が更新されるかどうかについてもご紹介しますので、ご確認いただく際のご参考としていただけますと幸いです。 

  

<事前準備> 

以下のサイトの手順にて、Exchange Online に接続してから実行してください。 

  

 

it-bibouroku.hateblo.jp

 

 

 

 

1. 特定ユーザーの最終ログイン日時を確認する 

 

<コマンドレット> 

Get-MailboxStatistics -Identity "ユーザーメールアドレス" | select DisplayName,LastLogonTime,LastLogoffTime 

  

<実行例> 

Get-MailboxStatistics -Identity "user01@contoso.com" | select DisplayName,LastLogonTime,LastLogoffTime 

  

  

2. 一括でユーザーの最終ログイン日時を確認する 

 

1.ユーザーの情報を取得します。 

<構文 1 > 

$Temp=foreach ($i in Get-Mailbox -Recipienttype UserMailbox -ResultSize Unlimited){Get-MailboxStatistics -Identity $i.PrimarySmtpAddress  | select @{n="MailboxName";e={$i.DisplayName}},@{n="MailAddress";e={$i.PrimarySmtpAddress}},LastLogonTime,LastLogoffTime

  

 2.取得した情報を CSV ファイルにエクスポートします。 

<構文 2> 

$Temp | Export-Csv -Encoding UTF8 -Path "ファイルパス"  

  

<実行例> 

$Temp | Export-Csv -NoTypeInformation -Encoding UTF8 -Path C:\Temp\UserLogonTime.csv 

  

C ドライブ直下の Temp フォルダーに UserLogonTime.csv というファイル名で出力する場合の実行例です。 

  

[出力項目] 

MailboxName : ユーザーの表示名 

MailAddress : ユーザーのプライマリメールアドレス 

LastLogonTime : ユーザーの最終ログイン日時 

LastLogoffTime: ユーザーの最終ログオフ日時 

  

 

 

LastLogonTime パラメーターが更新される操作 

  1. Outlook クライアントで該当メールボックスに接続する。
  2. Outlook on the web で該当メールボックスに接続する。
  3. 以下のいずれかの方法を利用し、他のユーザーが Outlook で該当メールボックスを開く。

   - プロファイルにアカウントを追加する。 

   - アカウント設定画面の [詳細設定] にて、メールボックスを追加する。 

  1. 他のユーザーが、Outlook on the web でメールボックスを開く。※1
  2. 他のユーザーが、共有の予定表にて該当ユーザーの予定表を開く。※2

※1 : Outlook on the web の [他のメールボックスを開く] 機能 

※2 : Outlook 起動後、対象の予定表を初めて開いたタイミングで更新されます。  

  

LastLogonTime については、Skype for Business を利用した場合にも更新される動作となります。そのため、完全なメールボックスの利用履歴となり得ない場合もあります。 

また、データセンター側でメンテナンスなどにより、メールボックスの移動が行なわれた場合など、意図しないタイミングで LastLogonTime と LastLogOffTime の値が空白、または、利用した覚えのない時間帯などに更新される可能性があります。 

  

  

LastLogonTime パラメーターが更新されない操作 

  1. Microsoft オンライン ポータルにサインインする。
  2. 管理者ユーザーが Exchange 管理センターにて該当メールボックスの情報、設定などを変更する。
  3. 管理者ユーザーが、Outlook Web App のユーザー名をクリックし、[他のユーザー] から該当ユーザーのオプション画面を開く、または変更する。
  4. POP/IMAP によってメールクライアントから接続を行っている場合

  

  

 LastLogoffTime パラメーターが更新される操作 

  1. Office 365 と同期済のプロファイルにて、Outlook クライアントを起動し、終了させた場合の動作

Outlook クライアント起動時に POP, IMAP, MAPI などの接続方法によらず、ログオン確認時に LastLogOnTime とほぼ同時刻に LastLogOffTime は空白に更新されます。 

Outlook クライアント終了時に、 LastLogOffTime は空白のまま更新されない動作となります  

     

  1. Outlook on the web 、もしくは OWA アプリにてログインし、ブラウザ、もしくは OWA アプリを終了させた場合の動作

・ログオン確認時に LastLogOnTime とほぼ同時刻に LastLogOffTime は時刻が反映して更新されます。 

・正常にサインアウトした場合には、 LastLogOffTime は時刻が反映して更新されます。 

  ※ LastLogOffTime はブラウザーやアプリを終了させた時刻には更新されません。 

  

  1. ActiveSync 接続し、終了した場合の動作

アカウント初期設定し、ログオン確認時に LastLogOnTime とほぼ同時刻に LastLogOffTime も併せて更新されます。 

※ LastLogOffTime は終了させた時刻には更新されません。 

※ [終了] にはセッションの切断、電源を切る、機内モードにした際の動作も含まれます。  

  

  

 

【Office365参考書】PSTファイルをOutlookにインポートした際のフォルダについて

f:id:it-bibouroku:20200305151118j:plain

コンテンツの検索などでPSTファイルをエクスポートし、Outlookにインポートした際に見慣れないフォルダが表示されます。

 

今回は、各フォルダについてご紹介していきたいと思います。

 

 

◇ インフォメーションストアの先頭 

インフォメーション ストアの先頭は、すべてのメールボックスに存在する最上位 (ルート) フォルダーとなります。 

このフォルダー配下に、受信トレイや送信済みアイテムフォルダーなどユーザーが画面上で確認できる各フォルダーが格納されております。 

  

◇ Deleted Items 

PST ファイルへ出力する際、既定で作成されるフォルダーとなります。 

こちらのフォルダーにつきましては、アイテムが空の状態で作成され、ユーザーメールボックス内のアイテムが格納されることはございません。 

  

◇ ApplicationDataRoot 

メールボックスのシステムに関連するフォルダーとなり、格納されているアイテムもメールボックスのシステムに利用されるアイテムとなります。 

※ ユーザーが使用されているアイテムが格納されることはございません。 

  

◇ SubstrateFiles 

メールボックスのシステムに関連するフォルダーとなり、格納されているアイテムもメールボックスのシステムに利用されるアイテムとなります。 

※ ユーザーが使用されているアイテムが格納されることはございません。 

  

◇ PersonMetadata 

連絡先アイテムの作成、取得、更新、削除、移動、コピー等の操作のために使用される自動生成のデータフォルダになります。 

※ ユーザーが使用されているアイテムが格納されることはございません。 

  

◇ メールアドレス (Primary)  

Exchange Online のライセンスを付与することで作成されるプライマリ (ユーザー) メールボックス領域になります。 

  

◇ メールアドレス (MainArchive) 

インプレースアーカイブ (オンラインアーカイブ) 機能を有効化することで生成されるアーカイブメールボックス領域になります。 

 

◇ SkypeSpacesDate 

Skype for Business や Teams のデータが格納されているフォルダーとなります。 

  

 

◇ Recoverable items 

ユーザー領域 (受信トレイや送信済みフォルダが存在する領域) から削除されたアイテムが格納されている回復可能なアイテム領域になり、保持機能にて保持されているアイテムなどが配下のフォルダーに格納されております。 

  

 Recoverable items 配下 の Deletions 

削除済みアイテム フォルダーから削除されたアイテムが格納されております。 

このフォルダーは、Outlook および Outlook Web App の削除済みアイテムの復元機能によりユーザー画面に表示されます。 

※ 当フォルダーに格納されたアイテムは一定期間 (既定 14日) 経過後、メールボックスから完全削除が行われます。 

  訴訟ホールドなどの保持機能を有効化なされている場合、各保持機能にもとづいたフォルダーにアイテムは移動され保持されております。 

  

 Recoverable items 配下 の Purges 

[回復可能なアイテム] フォルダーになります。 

訴訟ホールド (無期限) または単一アイテムの回復のいずれかが有効 (単一アイテムの回復は既定で有効) である場合、このフォルダーには、削除されたアイテムが格納されています。 

  

 Recoverable items 配下 の DiscoveryHolds 

[回復可能なアイテム] フォルダーになります。 

訴訟ホールド (有期限) またはインプレース保持のいずれかが有効 (単一アイテムの回復は既定で有効) である場合、このフォルダーには、削除されたアイテムが格納されています。 

  

 Recoverable items 配下 の Versions 

[回復可能なアイテム] フォルダーになります。 

訴訟ホールドなどの保持機能が有効である場合、このフォルダーには、Outlook クライアント等で、メールボックス内のメールアイテムを改ざん、または変更したアイテムの原本、変更されたコピーアイテムが移動されるフォルダーでございます。 

  

 

【Office365参考書】ライセンスの特定のサービスが有効なユーザーを確認するには?

f:id:it-bibouroku:20200305151118j:plain

今回は、ライセンスに含まれている特定のサービスが有効なユーザーを一覧として取得する方法をご紹介したいと思います。

 

例えば、ExchangeOnlineが有効なユーザーやSharePointOnlineが有効なユーザーを確認する場合にご利用いただくことができます。

 

 

 


Windows PowerShell の接続 

Windows PowerShell を管理者として起動し、接続のため以下のコマンドレットを実行し、管理者ユーザーの ID とパスワードを入力します。  

   

【コマンドレット】  

Connect-MsolService  

   

 

対象サービスの ServiceName (サービス名)の確認 

 

1. 以下のコマンドレットを実行して、ご契約のライセンスの SkuPartNumber を取得します。  

   

【コマンドレット】 

Get-MsolAccountSku | Format-Table AccountSkuId,SkuPartNumber 

  

【実行結果例】 

AccountSkuId               SkuPartNumber 

------------              ------------- 

*****:ENTERPRISEPACK      ENTERPRISEPACK 

 

 [Office 365 Enterprise E3] の場合は、[ENTERPRISEPACK] と表示されます。 

   

【留意事項】  

・ 出力例の AccountSkuId や SkuPartNumber は、ご契約状況により表記が異なる可能性がございます。  

・ 上記の値は、予告なく変更される場合がありますので、都度ご確認いただけますようお願い申し上げます。  

   

docs.microsoft.com

   

 2. 上記で確認した SkuPartNumber を使用し、以下のコマンドレットを実行して、対象サービスの ServiceName を取得します。  

   

【コマンドレット】 

Get-MsolAccountSku | where {$_.SkuPartNumber -eq "<確認した SkuPartNumber の値>"} | foreach {$_.ServiceStatus} | foreach {$_.Serviceplan} | select servicename 

  

【実行例】※ Office 365 Enterprise E3 内のサービス内容を調べる場合の実行例です。 

Get-MsolAccountSku | where {$_.SkuPartNumber -eq "ENTERPRISEPACK"} | foreach {$_.ServiceStatus} | foreach {$_.Serviceplan} | select servicename 

  

【出力例】 

ServiceName 

----------- 

STREAM_O365_E3                 Microsoft Stream for O365 E3 SKU  

Deskless                       Microsoft StaffHub  

FLOW_O365_P2                   Flow for Office 365  

POWERAPPS_O365_P2              PowerApps for Office 365  

TEAMS1                         Microsoft Teams  

PROJECTWORKMANAGEMENT          Microsoft Planner 

SWAY                           Sway 

INTUNE_O365                    Mobile Device Management for Office 365 

YAMMER_ENTERPRISE              Yammer Enterprise 

RMS_S_ENTERPRISE               Azure Rights Management  

OFFICESUBSCRIPTION             Office 365 ProPlus  

MCOSTANDARD                    Skype for Business Online (プラン 2) 

SHAREPOINTWAC                  Office Online 

SHAREPOINTENTERPRISE           SharePoint Online (プラン 2) 

EXCHANGE_S_ENTERPRISE          Exchange Online (プラン 2) 

 

   

【説明】  

・ 実行例は、E3 に含まれるサービスの一覧を出力する場合の例です。  

・ Exchange Online (プラン 2) は [EXCHANGE_S_ENTERPRISE] と表示されます。  

   

【留意事項】  

・ ServiceName は、予告なく変更される場合がありますので、都度ご確認いただけますようお願い申し上げます。  

   

 

特定のサービスが有効になっているユーザーの出力 

以下のコマンドレットを実行して、指定したサービスが有効になっている、すべてのユーザーの情報を CSV ファイルに出力します。  

   

【コマンドレット】  

$skuList = @(); Get-MsolUser -All | % {$upn = $_.UserPrincipalName; $dpn =$_.DisplayName; $_.Licenses | % {$sku = $_.AccountSkuId; $_.ServiceStatus | ForEach-Object { $skuList += @{UserPrincipalName = $upn; DisplayName = $dpn; AccountSkuId = $sku; ServiceName = $_.ServicePlan.ServiceName; ProvisioningStatus = $_.ProvisioningStatus;} } } }; $skuList | Select-Object @{n="UserPrincipalName"; e={$_.UserPrincipalName}}, @{n="DisplayName"; e={$_.DisplayName}}, @{n="AccountSkuId"; e={$_.AccountSkuId}}, @{n="ServiceName"; e={$_.ServiceName}}, @{n="ProvisioningStatus"; e={$_.ProvisioningStatus}} | Where-Object {$_.ServiceName -eq "<対象サービスのServiceName>" -and $_.ProvisioningStatus -ne "Disabled"}  

   

【実行例】  

$skuList = @(); Get-MsolUser -All | % {$upn = $_.UserPrincipalName; $dpn =$_.DisplayName; $_.Licenses | % {$sku = $_.AccountSkuId; $_.ServiceStatus | ForEach-Object { $skuList += @{UserPrincipalName = $upn; DisplayName = $dpn; AccountSkuId = $sku; ServiceName = $_.ServicePlan.ServiceName; ProvisioningStatus = $_.ProvisioningStatus;} } } }; $skuList | Select-Object @{n="UserPrincipalName"; e={$_.UserPrincipalName}}, @{n="DisplayName"; e={$_.DisplayName}}, @{n="AccountSkuId"; e={$_.AccountSkuId}}, @{n="ServiceName"; e={$_.ServiceName}}, @{n="ProvisioningStatus"; e={$_.ProvisioningStatus}} | Where-Object {$_.ServiceName -eq "EXCHANGE_S_ENTERPRISE" -and $_.ProvisioningStatus -ne "Disabled"}  

   

【説明】  

・ 実行例は、テナント内の Exchange Online (プラン 2) が有効になっているすべてのユーザーを出力する場合の例です。  

・ 上記条件のユーザーがテナント内に存在しない場合は、結果の出力は行われません。  

・ 以下のような出力が行われた場合は、当該ユーザーに付与されているライセンス内の、Exchange Online (プラン 2) が有効になっております。  

   

【出力例】  

UserPrincipalName  : user@contoso.onmicrosoft.com  

DisplayName        : User  

AccountSkuId       : contoso::ENTERPRISEPACK  

ServiceName        : EXCHANGE_S_ENTERPRISE 

ProvisioningStatus : Success 

 

【補足事項】  

 [ProvisioningStatus (認証状態)] について 

[PendingProvisioning] … ライセンスが準備中の状態 

[PendingActivation] … ライセンス認証待ち状態 

[PendingInput] … ライセンスが付与されている状態で、そのサービスを使用するための準備が完了していない状態 

                  Office 365 上で [オン] になっている状態 

[Success]      … ライセンスが有効となっている状態 

                  Office 365  上で [オン] になっている状態 

[Disabled]     … ライセンスが無効となっている状態 

                 Office 365  上で [オフ] になっている状態