Hello,
I use the script that saves attachments from messages from Exchange mailbox.
Some attachments save as "System.Object[]" instead of real filename and at the end of the such file I see a garbage...
Thank you for any help!
The script:
param($mailboxName = "***", $smtpServerName = "****", $emailFrom = "****", $emailTo = "*****" ) cls Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll" try { $Exchange2007SP1 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2007_SP1 $Exchange2010 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010 $Exchange2010SP1 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP1 $Exchange2010SP2 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2 $Exchange2013 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013 $Exchange2013SP1 = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013_SP1 # create EWS Service object for the target mailbox name $exchangeService = New-Object -TypeName Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList $Exchange2010 $exchangeService.UseDefaultCredentials = $true #Provide the credentials $exchangeservice.AutodiscoverUrl("***",{$true}) #$exchangeService.AutodiscoverUrl($mailboxName,{$true}) $inboxfoldername = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$MailboxName) $InboxFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchangeservice,$inboxfoldername) $itemView = New-Object -TypeName Microsoft.Exchange.WebServices.Data.ItemView -ArgumentList 100 $dateTimeItem = [Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeReceived $15MinutesAgo = (Get-Date).AddDays(0) $searchFilter = New-Object -TypeName Microsoft.Exchange.WebServices.Data.SearchFilter+IsLessThanOrEqualTo -ArgumentList $dateTimeItem,$15MinutesAgo $foundItems = $exchangeService.FindItems($inboxFolder.Id,$searchFilter,$itemView) } catch { $_.Exception.Message+$_.InvocationInfo.PositionMessage | out-file 'c:\temp\maillog.txt' -append } $founditems | ForEach {$_.Load()} $FolderView = new-object Microsoft.Exchange.WebServices.Data.FolderView(100) $FolderView.Traversal = [Microsoft.Exchange.Webservices.Data.FolderTraversal]::Deep $SearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,"AS") $FindFolderResults = $exchangeservice.FindFolders([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$SearchFilter,$FolderView) if($FindFolderResults.Id) { $FolderId = $FindFolderResults.Id } else { "Folder not found!" | out-file 'c:\temp\maillog.txt' -append # exit } #-------------------read attachments from messages----------------------------------------------------------------- $i=0 $founditems | %{ if ($_.subject -like '*****') { $i++ $_.load() $attach=$_.Attachments if ($attach.count -ge 1){ $attach.load() #-------- download attachments to folder------------------------------------------------------------------------------------ $fiFile = new-object System.IO.FileStream((“c:\temp\attachments\” + $attach.Name.ToString()), [System.IO.FileMode]::Create) $fiFile.Write($attach.Content, 0, $attach.Content.Length) $fiFile.Close() $_.delete('MovetoDeletedItems') } else{ "attachments not found..." | out-file 'c:\temp\maillog.txt' -append } } }