适用于Outlook的PowerShell命令

时间:2018-01-19 07:24:36

标签: office365 outlook-addin outlook-2010

我想使用PowerShell命令在Outlook中创建自动规则。我尝试过单个用户,可以使用命令创建文件夹,我希望它为所有邮寄我的用户创建文件夹。以下是我用于创建单个文件夹的代码。

 $GetOutlook = New-Object -com "Outlook.Application" 
$olName = $GetOutlook.GetNamespace("MAPI")
$olxEmailFolder = $olName.GetDefaultFolder(6) #‘olFolderInbox’
$olxEmailFolder.Name
$SubFolders = $olxEmailFolder.Folders
ForEach ($Folder in $SubFolders) {
  $Folder.Folder
$sname= "Mohit"
ForEach($SubSubFolder in $Folder) {
   $fname= $SubSubFolder.Name
   if ($sname -ne $fname )
   {
   $comments = @' 

Script name: Create-Folder.ps1 
Created on: Monday, January 17, 2018 

Author: kundan 
Purpose: How can I use Windows Powershell to 
Create a New Folder in Microsoft Outlook? 
'@

#-----------------------------------------
------------ 
function Release-Ref ($ref) 
{ 
([System.Runtime.InteropServices.Marshal]::ReleaseComObject( 
[System.__ComObject]$ref) -gt 0) 
[System.GC]::Collect() 
[System.GC]::WaitForPendingFinalizers() 
} 

#----------------------------------------------------- 
$olFolderInbox = 6 
$o = new-object -comobject outlook.application 
$n = $o.GetNamespace("MAPI")
$f = $n.GetDefaultFolder($olFolderInbox)
$nf = $f.Folders.Add("$sname") 
$a = Release-Ref($nf) 
$a = Release-Ref($f) 
$a = Release-Ref($n) 
$a = Release-Ref($o) 
   }
   else
   {
   echo "folder already  exist"
   }
  }
} 

1 个答案:

答案 0 :(得分:0)

powershell运行一次。如果要为每个发件人名称创建一个文件夹,则需要为Outlook开发一个与Outlook一起使用的COM加载项。

看起来您需要创建一个加载项,该加载项可以为发件人创建一个文件夹,然后移动在那里收到的项目。要完成工作,您需要处理Application类的NewMailEx事件,该事件将针对Microsoft Outlook处理的每个接收项触发一次。该项可以是几种不同项类型之一,例如,MailItem,MeetingItem或SharingItem。 EntryIDsCollection字符串包含与该项对应的条目ID。请注意,当EntryIDCollection包含自上次触发事件以来收件箱中收到的所有项目的逗号分隔条目ID列表时,此行为已从事件的早期版本更改。

当新邮件到达收件箱时以及客户端规则处理发生之前,NewMailEx事件将触发。您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项目。

在事件处理程序中,您可以获取发件人名称并创建相应的文件夹。然后,您可以使用MailItem类的Move方法将Microsoft Outlook项目移动到新文件夹。