Private/Migration/Invoke-T2TNewMailboxMove.ps1
function Invoke-T2TNewMailboxMove { param ( [Parameter(ValueFromPipeline, Mandatory)] [ValidateNotNullOrEmpty()] $UserList, [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string] $RemoteHost, [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string] $Tenant, [Parameter()] [ValidateNotNullOrEmpty()] [int] $BadItemLimit, [Parameter()] [ValidateNotNullOrEmpty()] [int] $LargeItemLimit, [Parameter()] [ValidateNotNullOrEmpty()] [int] $IncrementalSyncIntervalHours ) begin { $SyncTime = [timespan]::new($IncrementalSyncIntervalHours, 00, 00) } process { foreach ($User in $UserList) { $Param = @{ BatchName = $User.BatchName Identity = $User.ExchangeGuid Outbound = $true RemoteTenant = $RemoteHost TargetDeliveryDomain = $Tenant BadItemLimit = $BadItemLimit LargeItemLimit = $LargeItemLimit CompleteAfter = (Get-Date).AddMonths(12) IncrementalSyncInterval = $SyncTime AcceptLargeDataLoss = $true } # New-MoveRequest –OutBound -Identity <mailboxguid> -RemoteTenant "Contoso.onmicrosoft.com" -TargetDeliveryDomain Contoso.onmicrosoft.com -BadItemLimit 50 -CompleteAfter (Get-Date).AddMonths(12) -IncrementalSyncInterval '24:00:00' try { $Result = New-MoveRequest @Param -WarningAction SilentlyContinue -ErrorAction Stop [PSCustomObject]@{ 'DisplayName' = $User.DisplayName 'UserPrincipalName' = $User.UserPrincipalName 'Result' = 'SUCCESS' 'MailboxSize' = [regex]::Matches("$($Result.TotalMailboxSize)", "^[^(]*").value 'ArchiveSize' = [regex]::Matches("$($Result.TotalArchiveSize)", "^[^(]*").value 'SourceExchangeGuid' = $User.ExchangeGuid 'TargetExchangeGuid' = $Result.ExchangeGuid 'Log' = $Result.StatusDetail 'Action' = 'NEW' } } catch { [PSCustomObject]@{ 'DisplayName' = $User.DisplayName 'UserPrincipalName' = $User.UserPrincipalName 'Result' = 'FAILED' 'MailboxSize' = '' 'ArchiveSize' = '' 'SourceExchangeGuid' = $User.ExchangeGuid 'TargetExchangeGuid' = $Result.ExchangeGuid 'Log' = $_.Exception.Message 'Action' = 'NEW' } } } } } |