2012-05-29 1 views
1

J'ai un problème avec le script PowerShelll suivant:PowerShell et Outlook - Incohérence

$mail = $outlook.CreateItem(0) 
$mail.To = "[email protected]" 
$mail.Subject = "PowerShell Test 1" 
$mail.Body = "Body..." 
$mail.HTMLBody = "This is test!" 
$mail.Attachments.Add("C:\Test.txt")  
$mail.save() 

$mail = $outlook.CreateItem(0) 
$mail.To = "[email protected]" 
$mail.Subject = "PowerShell Test 2" 
$mail.Body = "Body..." 
$mail.HTMLBody = "This is test!" 
$mail.Attachments.Add("C:\Test.txt")  
$mail.save() 

Lorsque Outlook est déjà lancé, le script fonctionne très bien - comme prévu, je reçois deux e-mails dans le dossier Brouillons.

Lorsque Outlook n'est pas démarré, Outlook demande d'abord à l'utilisateur des autorisations, mais à la fin je reçois UNIQUEMENT SECONDE courrier électronique dans les brouillons, FIRST EMAIL est manquant.

Quelqu'un at-il rencontré ce problème, des solutions?

+1

Quelle est exactement 'outlook' de $? –

+0

Avez-vous essayé d'envelopper dans un bloc try/catch? @Ocaso C'est probablement $ outlook = new-object -com outlook.application; mais ce serait bien si le PO confirmait. – nimizen

+0

Je n'ai aucun problème. Je vois les deux brouillons même quand Outlook est fermé. – ravikanth

Répondre

1

J'ai eu le même problème que Ocaso où le premier e-mail était envoyé à la boîte de réception et le second était envoyé aux brouillons. Je fixe ce problème en mettant en place une session pour Outlook:

$outlook = new-object -com outlook.application 
$session = $outlook.Session 
$session.Logon() 

La session définit essentiellement une période de temps où une application, les perspectives dans ce cas, peuvent prendre ou les données de configuration. En appelant session.Logon(), nous instancions une session ou une période au cours de laquelle Outlook peut enregistrer des données/e-mails. L'article ci-dessous fait un meilleur travail des sessions expliquant:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms714451%28v=vs.85%29.aspx

Merci