我在一個管理幾百臺服務器的團隊工作。我們每個人對大約100臺服務器承擔主要責任。我是團隊中的新成員,因此我在Outlook中制定了一個「MyServers」規則,它會發出特殊的聲音,並將電子郵件移動到文件夾「MyServers」中,當電子郵件以其中一個服務器名稱主題或身體。服務器來來往往,負責人偶爾會改變。我可以使用GUI來修改列表,但我想要做的是使用PowerShell根據來自我們的表上的SQL查詢的數據集來修改服務器列表,這些數據集屬於哪個列表。 (也可以在爲別人掩蓋時有所幫助)使用PowerShell修改Outlook規則中的數組文本條件?
每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',但我沒有找到任何示例代碼來讀取或修改單個現有規則的規則條件。
- Specifying Rule Conditions
- TextRuleCondition Object (Outlook)
- TextRuleCondition.Text Property (Outlook)
最優:我想轉到 「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創建了一個新的規則。沒有任何內容表明它是否或者不可能修改現有的規則。我的計劃「B」將讀取現有的「MyServers」規則,修改數組,並用新的規則覆蓋舊規則。這是有問題的,因爲它限制了選項,只能以編程方式創建一些條件和操作。
您是否考慮過探索EWS託管API?我沒有示例代碼,但我已經使用它(在PowerShell中)非常成功地處理郵箱中的規則。 https://msdn.microsoft.com/en-us/library/office/dn481313%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396#bk_UpdateRulesEWSMA –
@ChrisDent,沒有,現在看着它。首先想到的是我不確定我能從SQL中獲取數據,用PowerShell我應該能夠使用SQL獲取數據並將其操作到數組中,並將其保存到一個命令的Outlook中。 –
無法以與Microsoft.Office.Interop.Outlook不同的方式從SQL中獲取EWS。無論你的命令或腳本能做什麼,建議只是爲改變規則提供一個潛在的更好的界面。 –