2016-06-15 5 views
1

私は自分のOutlookの受信トレイを解析し、特定のメッセージと一致させようとしています。これまでの私のコードは以下の通りですが、スクリプトがそれぞれのマッチに対して同じメッセージを書いていることがわかりました。意味、つまり、スクリプトが保存する最後のメッセージ本文は、フィルタがキャッチしたそれぞれの一致に対してX回書き込まれます。Powershellスクリプトデザインのメッセージ本文をログに書き込む

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. 

} 

答えて

0

これを試してみてください:

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

働いたこと - 感謝を!私が必要とした唯一の変更は$ i -gt -1をセットすることでした。なぜなら、最後のメッセージを書くのに失敗するからです。 – mandg

関連する問題