在Powershell中创建Outlook规则时出错

时间:2016-05-30 09:19:20

标签: powershell outlook powershell-v2.0 outlook-2010

我一直在为Powershell搞清楚Outlook对象。我想创建Outlook规则,我让它工作。将项目搁置一段时间。 当我选择备份时,我无法创建Outlook规则。请注意,我没有更改代码中的任何内容。

代码生成Outlook规则

 $rules = $ol.Session.DefaultStore.GetRules()

 $rule = $rules.Create("spamfilter",[Microsoft.Office.Interop.Outlook.OlRule Type]::olRuleReceive)

    $condition = $rule.Conditions.SenderAddress
    $condition.Enabled = $true
    $condition.Address = @("<sender>")
    $action = $rule.Actions.MoveToFolder
    $action.Enabled = $true

    [Microsoft.Office.Interop.Outlook._MoveOrCopyRuleAction].InvokeMember("Folder",[System.Reflection.BindingFlags]::SetProperty,$null,$action,$junk)

    $rules.Save()

错误

  

使用“5”参数调用“InvokeMember”的异常:“找不到成员。(HRESULT异常:0x80020003(DISP_E_MEMBERNOTFOUND))”   在线:22 char:5

     
      
  • [Microsoft.Office.Interop.Outlook._MoveOrCopyRuleAction] .InvokeMember(“Folde ...
  •   
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      
        
    • CategoryInfo:NotSpecified:(:) [],MethodInvocationException
    •   
    • FullyQualifiedErrorId:COMException
    •   
  •   

有人请帮助我。这似乎是什么问题?我迷路了,谢谢。

1 个答案:

答案 0 :(得分:0)

我发现了问题。我使用Redemption outlook库定义了$junk变量。 这样它就不是合法的MAPI对象,因此它不会被识别为有效参数。

我必须使用$junk = $routlook.GetDefaultFolder(23)

,而不是定义$junk = $ol.Session.DefaultStore.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderJunk)

但是当然我没有在问题中提供这些信息,因为我觉得它看起来并不相关,因为我的脚本中没有任何其他内容会产生如何定义此文件夹的问题。