使用PowerShell修改Outlook规则中的数组文本条件?

时间:2016-08-19 13:05:39

标签: email powershell outlook outlook-2010

我在一个管理几百台服务器的团队工作。我们每个人都对大约100台服务器负主要责任。我是团队中的新人,所以我有一个规则" MyServers"在outlook中发出特殊声音并将电子邮件移动到文件夹" MyServers",当电子邮件中包含主题或正文中我的某个服务器的名称时。服务器来来往往,负责人偶尔会改变。我可以使用GUI来修改列表,但我想要做的是使用PowerShell根据我们的桌子上属于什么的SQL查询中的数据集来修改服务器列表。 (在为其他人报道时也会有所帮助。

Per PowerShell - Managing an Outlook Mailbox with PowerShell, By Joe Leibowitz, March 2013理论上是可能的。那篇文章和帖子Hey, Scripting Guy! How Can I Tell Which Outlook Rules I Have Created? December 15, 2009 by ScriptingGuy1教会了我如何将outlook文件放到PowerShell中来阅读和编写。帖子Multiple Actions for one Outlook rule in Powershell也很有帮助。

我可以找到几个创建规则的示例,主要是围绕电子邮件地址。当我做更多的研究(下面)时,似乎我想要修改' TextRuleCondition.Text'但我没有找到任何示例代码来读取或修改单个现有规则的规则条件。

  1. Specifying Rule Conditions
  2. TextRuleCondition Object (Outlook)
  3. TextRuleCondition.Text Property (Outlook)
  4. 最佳:我想去" MyServers"从SQL表中获取列表后,规则并将数组从使用PowerShell构建的新数组更改为。

    ##source https://blogs.technet.microsoft.com/heyscriptingguy/2009/12/15/hey-scripting-guy-how-can-i-tell-which-outlook-rules-i-have-created/
    ## Gets outlook rules on PC
    #Requires -version 2.0
    Add-Type -AssemblyName microsoft.office.interop.outlook 
    $olFolders = “Microsoft.Office.Interop.Outlook.OlDefaultFolders” -as [type]
    $outlook = New-Object -ComObject outlook.application
    $namespace  = $Outlook.GetNameSpace(“mapi”)
    $folder = $namespace.getDefaultFolder($olFolders::olFolderInbox)
    $rules = $outlook.session.DefaultStore.<Some code here gets TextRuleCondition.Text for just MyServers>
    $rules ## this displays the current value
    ##More code inserts the array that I built earlier (not actually built, yet as I don't know what it should look like)
    $rules.Save() ## this saves the changes. 
    

    到目前为止我发现的所有内容都以编程方式从PowerShell创建了一个完整的新规则。没有任何内容表明是否,或者无法修改现有规则。我的计划&#34; B&#34; 将是阅读现有的&#34; MyServers&#34;规则,修改数组,并用新规则覆盖旧规则。这是有问题的,因为它限制了选项,只能以编程方式创建一些条件和操作。

1 个答案:

答案 0 :(得分:1)

Request.Url.AbsoluteUri.Substring(0, Request.Url.AbsoluteUri.LastIndexOf('/') + 1);