Назад | Перейти на главную страницу

Exchange 2003 удаляет вложения электронной почты, сохраняя их в файл пользователя

В настоящее время я использую этот сценарий vba (локально на клиенте), чтобы удалить вложения электронной почты из папки пользователя и перейти в папку с документами пользователя, а затем заменить указателем в электронном письме, чтобы указать вложение.

Public Sub SaveOLFolderAttachments()

  Dim oShell As Object
  Set oShell = CreateObject("Shell.Application")
  Dim fsSaveFolder As Object
  Set fsSaveFolder = oShell.BrowseForFolder(0, "Please Select a Save Folder:", 1)
  If fsSaveFolder Is Nothing Then Exit Sub
  ' Note:  BrowseForFolder doesn't add a trailing slash

  ' Ask the user to select an Outlook folder to process
  Dim olPurgeFolder As Outlook.MAPIFolder
  Set olPurgeFolder = Outlook.GetNamespace("MAPI").PickFolder
  If olPurgeFolder Is Nothing Then Exit Sub

  ' Iteration variables
  Dim msg As Outlook.MailItem
  Dim att As Outlook.attachment
  Dim sSavePathFS As String
  Dim sDelAtts

  For Each msg In olPurgeFolder.Items

    sDelAtts = ""

    If msg.Attachments.Count > 0 Then

      While msg.Attachments.Count > 0

        ' Save the file
        sSavePathFS = fsSaveFolder.Self.Path & "\" & msg.Attachments(1).FileName
        msg.Attachments(1).SaveAsFile sSavePathFS

        If msg.BodyFormat <> olFormatHTML Then
            sDelAtts = sDelAtts & vbCrLf & "<file://" & sSavePathFS & ">"
        Else
            sDelAtts = sDelAtts & "<br>" & "<a href='file://" & sSavePathFS & "'>" & sSavePathFS & "</a>"
        End If

        msg.Attachments(1).Delete

      Wend
      If msg.BodyFormat <> olFormatHTML Then
        msg.Body = msg.Body & vbCrLf & vbCrLf & "Attachments Deleted:  " & Date & " " & Time & vbCrLf & vbCrLf & "Saved To:  " & vbCrLf & sDelAtts
      Else
        msg.HTMLBody = msg.HTMLBody & "<p></p><p>" & "Attachments Deleted:  " & Date & " " & Time & vbCrLf & vbCrLf & "Saved To:  " & vbCrLf & sDelAtts & "</p>"
      End If

      msg.Save

    End If

  Next

End Sub

Он отлично работает в небольших масштабах, но становится очень утомительным для нескольких пользователей и папок. Мне было интересно, есть ли способ сделать это, возможно, в PowerShell, чтобы я мог зацикливать всех пользователей и пользовательские папки на самом сервере обмена?

Exchange 2003 / Windows Server 2003

??

Спасибо