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