2016-08-19 2 views
0

Je travaille sur une équipe qui gère quelques centaines de serveurs. Nous assumons chacun la responsabilité principale d'environ 100 serveurs. Je suis la nouvelle personne dans l'équipe, donc j'ai une règle "MyServers" dans Outlook qui fait un son spécial et qui déplace les emails dans le dossier "MyServers", quand un email arrive avec le nom d'un de mes serveurs dans le sujet ou corps. Les serveurs vont et viennent, et la personne responsable change occasionnellement. Je peux utiliser l'interface graphique pour modifier la liste, mais ce que je veux faire est d'utiliser PowerShell pour modifier la liste des serveurs en fonction d'un ensemble de données à partir d'une requête SQL sur notre table de qui appartient à quoi. (serait également utile lors de la couverture pour quelqu'un d'autre)Modifier la condition du texte de tableau dans une règle Outlook avec PowerShell?

Par PowerShell - Managing an Outlook Mailbox with PowerShell, By Joe Leibowitz, March 2013 est possible en théorie. Cet article et le poste Hey, Scripting Guy! How Can I Tell Which Outlook Rules I Have Created? December 15, 2009 by ScriptingGuy1 m'ont appris comment obtenir des fichiers Outlook dans PowerShell pour lire et écrire. Le poste Multiple Actions for one Outlook rule in Powershell a également été utile.

Je peux trouver plusieurs exemples de règles de création, principalement autour des adresses e-mail. Comme je l'ai fait plus de recherches (ci-dessous), il semble que je veux modifier 'TextRuleCondition.Text' mais je ne trouve aucun exemple de code qui permet de lire ou de modifier les conditions de la règle pour une seule règle existante.

  1. Specifying Rule Conditions
  2. TextRuleCondition Object (Outlook)
  3. TextRuleCondition.Text Property (Outlook)

optimale: Je voudrais aller à la règle "mes_serveurs" et changer le tableau, de ce qu'il est à un nouveau tableau Je vais construire avec PowerShell, après avoir obtenu la liste d'une table SQL. Tout ce que j'ai trouvé jusqu'à maintenant crée par programmation une toute nouvelle règle à partir de PowerShell. Rien n'indique s'il est ou n'est pas possible de modifier une règle existante. Mon Plan "B" serait de lire la règle "MyServers" existante, modifier le tableau, et remplacer l'ancienne règle par une nouvelle. Ceci est problématique car il limite les options, seules certaines conditions et actions peuvent être créées par programmation.

+0

Avez-vous envisagé d'explorer l'API gérée par EWS? Je n'ai pas de code d'exemple, mais j'ai utilisé ceci (dans PowerShell) pour manipuler les règles dans une boîte aux lettres avec beaucoup de succès. https://msdn.microsoft.com/en-us/library/office/dn481313%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396#bk_UpdateRulesEWSMA –

+0

@ChrisDent, n'a pas, en regardant maintenant. Première pensée n'est pas sûr que je peux obtenir les données de SQL avec lui, avec PowerShell je devrais être capable d'aller SQL obtenir les données et le manipuler dans les tableaux et l'enregistrer à Outlook dans une commande. –

+0

Vous ne pouvez pas obtenir de SQL avec EWS de la même manière que vous ne pouvez pas avec Microsoft.Office.Interop.Outlook. Quoi que votre commande ou script puisse faire, la suggestion était seulement de fournir une meilleure interface pour changer les règles. –

Répondre

1
#setup 
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”) 

#get all of the rules 
$rules = $outlook.Session.DefaultStore.GetRules() 

#get just the rule I care about 
$myRule = $rules | ? { $_.Name -eq 'My Awesome Rule' } 

#build my new array of text conditions 
$textValues = @('ServerA', 'NewServerB') 

#replace the existing value on my rule (this is assuming you are using BodyOrSubject, you can substitute Body, Subject, etc) 
$myRule.Conditions.BodyOrSubject.Text = $textValues 

#save all the rules 
$rules.save() 
+0

Test de succès, merci. Modifié les critères de la seule règle, la règle fonctionne comme prévu après la mise à jour. –