在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
可以很好地工作,我不太喜欢这种开发方式,有点cr脚。
我想使用AdvancedSearchComplete事件,但是我不知道如何在PowerShell中使用它,该文档适用于VBA。我不是很擅长PowerShell开发,我找不到解决方法。
感谢您的帮助!
答案 0 :(得分:0)
我终于找到了自己的解决方案,将其发布在下面,可能对将来的某个人有用:
我使用PowerShell Register-ObjectEvent订阅了AdvancedSearchComplete事件
查看我更新的脚本:
=Mult_Lookup_and_Sum(worksheets("Input Variable").range("f5"),worksheets("Ref Data").range("B:C"),2)