Powershell 如何使用EWS将项目移动到文件夹?

Powershell 如何使用EWS将项目移动到文件夹?,powershell,exchangewebservices,Powershell,Exchangewebservices,以下PowerShell脚本已根据我们的情况进行了调整。 它读取收件箱文件夹中的所有电子邮件,然后提取附件 它工作正常,但我想将项目移动到“/已处理”邮箱根文件夹。此文件夹不是收件箱文件夹的子文件夹: 邮箱 L收件箱 我处理过 我寄了一些东西 L删除的项目 如果我使用下面的行 [VOID]$miMailItems.Move("DeletedItems") 然而,它并没有像预期的那样工作。它删除了电子邮件,但在我的个人邮箱,而不是“约翰”邮箱 那么,你能帮我吗 使用代码[VOID]$miMai

以下PowerShell脚本已根据我们的情况进行了调整。 它读取收件箱文件夹中的所有电子邮件,然后提取附件

它工作正常,但我想将项目移动到“/已处理”邮箱根文件夹。此文件夹不是收件箱文件夹的子文件夹:

邮箱
L收件箱
我处理过
我寄了一些东西
L删除的项目
如果我使用下面的行

[VOID]$miMailItems.Move("DeletedItems")
然而,它并没有像预期的那样工作。它删除了电子邮件,但在我的个人邮箱,而不是“约翰”邮箱

那么,你能帮我吗

  • 使用代码
    [VOID]$miMailItems.move(“DeletedItems”)
  • 让我知道如何简单地将项目移动到john“Processed”邮箱子文件夹
  • $MailboxName='0john@domain.com'
    $downloadDirectory='\\share\'
    $dllpath=“C:\Program Files\Microsoft\Exchange Server\V15\Bin\Microsoft.Exchange.WebServices.dll”
    [VOID][Reflection.Assembly]::加载文件($dllpath)
    $service=新对象Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013)
    $sidbind=“LDAP://”
    $aceuser=[ADSI]$sidbind
    $service.AutodiscoverUrl($aceuser.mail.ToString())
    $folderid=新对象Microsoft.Exchange.WebServices.Data.folderid([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::收件箱,$MailboxName)
    $InboxFolder=[Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)
    $Sfha=新对象Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::HasAttachments,$true)
    $sfCollection=新对象Microsoft.Exchange.WebServices.Data.SearchFilter+SearchFilterCollection([Microsoft.Exchange.WebServices.Data.LogicalOperator]::和);
    $sfCollection.add($Sfha)
    $view=新对象Microsoft.Exchange.WebServices.Data.ItemView(2000)
    $frFolderResult=$InboxFolder.FindItems($sfCollection,$view)
    foreach($frFolderResult.Items中的miMailItems){
    $miMailItems.Load()
    foreach($miMailItems.Attachments中的附件){
    $attach.Load()
    $fiFile=new object System.IO.FileStream($downloadDirectory+“\”+(Get Date.millis秒+“\”+$attach.Name.ToString()),[System.IO.FileMode]::Create)
    $fiFile.Write($attach.Content,0,$attach.Content.Length)
    $fiFile.Close()
    }
    $miMailItems.isread=$true
    $miMailItems.Update([Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite)
    #以下邮件将发送到我的个人“已删除邮件”文件夹,而不是john邮箱。。。
    [VOID]$miMailItems.Move(“DeletedItems”)
    #如何将邮件发送到john邮箱的“/已处理”文件夹?
    }
    
    移动方法将获取要将项目移动到的文件夹的FolderId,因此您需要首先找到要移动到的文件夹的FolderId

    函数折叠自路径{
    param(
    $FolderPath=“$(throw'文件夹路径是必需参数”)”,
    $SmtpAddress=“$(throw'文件夹路径是必需参数”)”
    )
    过程{
    ##根据路径查找并绑定到文件夹
    #定义搜索路径时,应使用\
    #绑定到MSGFolder根目录
    $folderid=新对象Microsoft.Exchange.WebServices.Data.folderid([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$SmtAddress)
    $tfTargetFolder=[Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)
    #将搜索路径拆分为数组
    $fldArray=$FolderPath.Split(“\”)
    #在拆分数组中循环并搜索每一级文件夹
    对于($lint=1;$lint-lt$fldArray.Length;$lint++){
    #根据每个文件夹级别的displayname执行搜索
    $fvFolderView=新对象Microsoft.Exchange.WebServices.Data.FolderView(1)
    $SfSearchFilter=新对象Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,$fldArray[$lint])
    $findFolderResults=$service.FindFolders($tfargetFolder.Id、$SfSearchFilter、$fvFolderView)
    如果($findFolderResults.TotalCount-gt 0){
    foreach($findFolderResults.Folders中的文件夹){
    $tfTargetFolder=$folder
    } 
    } 
    否则{
    “找不到错误文件夹”
    $TFargetFolder=$null
    打破
    }     
    }  
    如果($tfargetfolder-ne$null){
    返回$tfargetfolder.Id.UniqueId.ToString()
    }
    否则{
    抛出“未找到文件夹”
    }
    }
    }
    #示例使用
    $fldId=FolderIdFromPath-FolderPath“\Processed”-SmtpAddress$aceuser.mail.ToString()
    $SubFolderId=新对象Microsoft.Exchange.WebServices.Data.FolderId($fldId)
    $SubFolder=[Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$SubFolderId)
    
    那就换衣服吧

    [VOID]$miMailItems.Move($SubFolder.Id)