Written
July 17, 2018
I was able to get the Archive parameter to work by adding some additional code. Basically, the Archive parameter was empty code - it never called anything. Below, I just added to the function for processing the mailbox and added an If statement.
# Bind to root folder
$mbx = New-Object Microsoft.Exchange.WebServices.Data.Mailbox( $Mailbox )
$Folder = $Null
if ([String]::IsNullOrEmpty($ParentFolder))
{
$ParentFolder = "wellknownfoldername.Inbox"
}
if ($ParentFolder.ToLower().StartsWith("wellknownfoldername."))
{
# Well known folder specified (could be different name depending on language, so we bind to it using WellKnownFolderName enumeration)
$wkf = $ParentFolder.SubString(20)
LogVerbose "Attempting to bind to well known folder: $wkf"
$folderId = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::$wkf, $mbx )
$Folder = ThrottledFolderBind($folderId)
}
###New code addition starting here...
if ($Archive)
{
$folderId = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::ArchiveMsgFolderRoot, $mbx )
$Folder = ThrottledFolderBind($folderId)
if ($Folder -and ($ParentFolder -ne "\"))
{
$Folder = GetFolder($Folder, $ParentFolder, $false)
}
}
###End new code addition
else
{
$folderId = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot, $mbx )
$Folder = ThrottledFolderBind($folderId)
if ($Folder -and ($ParentFolder -ne "\"))
{
$Folder = GetFolder($Folder, $ParentFolder, $false)
}
}