В сценарии PowerShell я хочу провести исследование локальных почтовых сообщений Windows.
У меня есть следующий сценарий:
Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$outlook = New-Object -com Outlook.Application;
$namespace = $outlook.GetNamespace("MAPI");
Function Get-OutlookInbox {
$accountsList = $namespace.Folders
$query = "Test"
$filter = "urn:schemas:httpmail:subject LIKE '"+$query+"'"
foreach($account in $accountsList) {
write-host "SEARCHING IN MAILBOX : " $account.name
$scope = $account.FolderPath
$search = $outlook.AdvancedSearch("'$scope'", $filter, $True)
Start-Sleep -Seconds 10
foreach ($result in $search.Results) {
$result.Subject
$result.ReceivedTime
$result.SenderName
}
}
$inbox = Get-OutlookInbox
$inbox
Хорошо работает благодаря Start-Sleep -Seconds 10
как$outlook.AdvancedSearch
функция асинхронная, мне не очень нравится этот способ разработки, немного дурацкий.
Я хотел бы использовать AdvancedSearchComplete Событие, но я не знаю, какиспользуйте его в PowerShell, а документация для VBA.Я не очень хорош в разработке PowerShell, не могу найти способ сделать это.
Спасибо за вашу помощь!