Public/Exchange/Get-MailboxMoveInfo.ps1

function Get-MailboxMoveInfo {
  <#
  .SYNOPSIS
  Reports on MailboxMoves to include BadItemLimit + LargeItemLimit information
 
  .DESCRIPTION
  Reports on MailboxMoves to include BadItemLimit + LargeItemLimit information
 
  .EXAMPLE
  Get-MailboxMoveInfo -SharePointURL 'https://CoreBTS.sharepoint.com/sites/CLIENT' -ExcelFile 'Batches.xlsx'
 
  .NOTES
  General notes
  #>

  param (
    [Parameter(Mandatory)]
    $SharePointURL,

    [Parameter(Mandatory)]
    $ExcelFile
  )

  $ExcelFull = Import-SharePointExcel -SharePointURL $SharePointURL -ExcelFile $ExcelFile
  $BatchChoice = $ExcelFull | Select-Object -ExpandProperty BatchName -Unique | Sort-Object | Out-GridView -OutputMode Multiple -Title "Choose which BatchName"
  $ExcelList = $ExcelFull | Where-Object { $_.BatchName -in $BatchChoice }

  $ExcelHash = @{}
  foreach ($Excel in $ExcelList) {
    $ExcelHash[$Excel.DisplayName] = @{
      PrimarySmtpAddress = $Excel.PrimarySmtpAddress
      UserPrincipalName  = $Excel.UserPrincipalName
    }
  }

  $MailboxList = Get-MoveRequest -ResultSize Unlimited
  $MoveHash = @{}
  foreach ($Mailbox in $MailboxList) {
    $MoveHash[$Mailbox.DisplayName] = @{
      BatchName   = $Mailbox.BatchName
      BatchStatus = $moves.Status
    }
  }

  foreach ($ExcelItem in $ExcelHash.Keys) {
    if ($MoveHash.ContainsKey($ExcelItem)) {
      $movesStats = Get-MoveRequestStatistics -Identity $ExcelHash[$ExcelItem]['PrimarySmtpAddress']
      [PSCustomObject]@{
        DisplayName           = $ExcelItem
        Result                = 'FOUND'
        UserPrincipalName     = $ExcelHash[$ExcelItem]['UserPrincipalName']
        PrimarySmtpAddress    = $ExcelHash[$ExcelItem]['PrimarySmtpAddress']
        BatchName             = $MoveHash[$ExcelItem]['BatchName']
        BatchStatus           = $MoveHash[$ExcelItem]['BatchStatus']
        BatchPercent          = $movesStats.PercentComplete
        BadItemLimit          = $movesStats.BadItemLimit
        BadItemsEncountered   = $movesStats.BadItemsEncountered
        LargeItemLimit        = $movesStats.LargeItemLimit
        LargeItemsEncountered = $movesStats.LargeItemsEncountered
        TotalMailboxSize      = $movesStats.TotalMailboxSize
        TotalMailboxItemCount = $movesStats.TotalMailboxItemCount
      }
    }
    else {
      [PSCustomObject]@{
        DisplayName           = $ExcelItem
        Result                = 'NOTFOUND'
        UserPrincipalName     = $ExcelHash[$ExcelItem]['UserPrincipalName']
        PrimarySmtpAddress    = $ExcelHash[$ExcelItem]['PrimarySmtpAddress']
        BatchName             = ''
        BatchStatus           = ''
        BatchPercent          = ''
        BadItemLimit          = ''
        BadItemsEncountered   = ''
        LargeItemLimit        = ''
        LargeItemsEncountered = ''
        TotalMailboxSize      = ''
        TotalMailboxItemCount = ''
      }
    }
  }
}