2016-06-15 3 views
1

Ich versuche, durch meine Outlook-Posteingang zu analysieren und bestimmte Nachrichten übereinstimmen und dann für jede dieser Übereinstimmungen den E-Mail-Nachrichtentext in mein Anwendungsprotokoll schreiben. Mein Code ist bis jetzt unten, aber ich finde, dass das Skript die gleiche Nachricht für jedes Spiel schreibt. Das bedeutet, dass der letzte Nachrichtentext, den das Skript speichert, für jede Übereinstimmung, die der Filter abfängt, X-mal geschrieben wird. diesePowershell-Skriptentwurf Schreiben Sie Nachrichtentext zum Protokollieren

Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null 
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type] 
$outlook = new-object -comobject outlook.application 
$namespace = $outlook.GetNameSpace("MAPI") 
$inbox = $namespace.getDefaultFolder($olFolders::olFolderInBox) 
$filter = (%{$inbox.items | Where {$_.SenderName -match ‘TestUser’ -and $_.UnRead -eq $true}}) 
$filter.count 

foreach ($msg in $filter) 
{ 
$MsgBody = $filter | select-object Body | format-table -HideTableHeaders -Wrap | Out-String 
} 

for ($i = $filter.count; $i -gt 0 ; $i --) { 
Write-eventlog -logname Application -source "TestAlerts" -eventID 100 -entrytype Information -message "$MsgBody" 
#$($msg)[$i].UnRead -eq $false - this still isn't working either. 

} 

Antwort

0

Versuchen:

for ($i = $filter.count; $i -gt 0 ; $i --) { 
$msg = $filter[$i] 
$MsgBody = $msg | select-object Body | format-table -HideTableHeaders -Wrap | Out-String 
Write-eventlog -logname Application -source "TestAlerts" -eventID 100 -entrytype Information -message "$MsgBody" 
} 
+1

Das funktionierte - Dank !! Die einzige Änderung, die ich vornehmen musste, war, $ i -gt -1 zu setzen, da es nicht möglich war, auf die letzte Nachricht zu schreiben. – mandg

Verwandte Themen