From bf090b40c52818df7ff52f134ce3ddd1e3dd5c2a Mon Sep 17 00:00:00 2001 From: eeckert Date: Fri, 3 Nov 2023 14:19:16 -0600 Subject: [PATCH] Update to be better. --- Export-PST.ps1 | 57 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/Export-PST.ps1 b/Export-PST.ps1 index dc62471..ede7c54 100644 --- a/Export-PST.ps1 +++ b/Export-PST.ps1 @@ -1,41 +1,78 @@ ## Connect to the Various MS365 Platforms -$YourAdminAccount = 'dmcdowell@mpe.ca' + +[CmdletBinding()] +param ( + # Define the email address to be exported + [Parameter(Mandatory = $true)] + [string] + $ExportEmail, + # Set this flag if the mailbox is shared + [Parameter(Mandatory = $false)] + [switch] + $SharedMB +) + Import-Module ExchangeOnlineManagement -Connect-IPPSSession -UserPrincipalName $YourAdminAccount +Connect-IPPSSession +$user = get-aduser -Filter { mail -eq $ExportEmail } +if ($user) { + $ExportName = $user.Name + ' Export' +} +else { + $ExportName = $ExportEmail + ' Export' +} ## Script Variables -$AZCopyPath = '.\AD Scripts\Support\AZCopy.exe' -$ExportName = "pocallaghan" -$ExportEmail = ".pocallaghan" #shared mailboxes need a leading dot. -$DestinationPath = $Env:USERPROFILE + '\Downloads\' +if ($SharedMB) { + # add leading dot if shared mailbox + $ExportEmail = ".$ExportEmail" +} New-ComplianceSearch $ExportName -ExchangeLocation $ExportEmail -AllowNotFoundExchangeLocationsEnabled $true | Start-ComplianceSearch + + do { $Status = Get-ComplianceSearch -Identity $ExportName - Write-Output 'current status' $Status.status + $Progress = { + ID = 1 + Activity = $Status.status + } + Write-Progress @Progress Start-Sleep -Seconds 10 } while ($Status.status -ne 'Completed') +$Progress = { + ID = 1 + Activity = "Starting Export..." +} +Write-Progress @Progress $Export_Action_name = New-ComplianceSearchAction $ExportName -Export -format FxStream $Export_Action_name.name do { $Export_Action = Get-ComplianceSearchAction -Identity $Export_Action_name.Name -IncludeCredential + + $Progress = { + ID = 1 + Activity = "Running Export" + } + Write-Progress @Progress + Start-Sleep -Seconds 10 } until ($Export_Action.status -eq 'Completed') #Need to extract Container URI and SAS token from Results, and pass those to AZCopy EXE #$ContainerURI = $export_action.results.split(';')[0].replace('Container url:','').replace(' ','') -$SASToken = $export_action.results.split(';')[2].replace(' SAS token: ','') +# $SASToken = $export_action.results.split(';')[2].replace(' SAS token: ','') Write-Output 'Process Complete: Use the SAS Token Below in the "Export" Tab of the following URL: https://compliance.microsoft.com/contentsearch' -Write-Output 'SAS Token: ' -Write-Output $SASToken +# Write-Output 'SAS Token: ' +# Write-Output $SASToken #$FullURI = $ContainerURI + $SASToken #$AZArgs = " cp '$FullURI' --recursive '$DestinationPath'" #Start-Process $AZCopyPath $AZArgs