帮酷LOGO
0 0 评论
文章标签:exchange  Outlook  OUT  


問題:

是否有辦法檢查 Outlook 是否能成功地從 PowerShell 連接到 Exchange? 目的是,我想計劃做個腳本用來做日誌。

經過一些研究,我成功地完成了以下工作:


$outlook = New-Object -ComObject Outlook.Application


Start-Sleep -s 5



$session = $outlook.session


$inbox = $session.GetDefaultFolder([Microsoft.Office.Interop.Outlook.olDefaultFolders]::olFolderInbox)



$date = Get-Date


If ($session.Offline) {


 $output ="Fail, mode $($session.ExchangeConnectionMode.ToString())"


} Else {


 $output ="Success"


}


"[$date] $output `n" | Out-File -Append"$HOMEol_log.txt" -Encoding"UTF8"


$outlook.Quit()



即使我拉電纜,也會寫入「Success 」。 經過檢查,我發現的另一種方法是


$validStates ="olCachedConnectedDrizzle","olCachedConnectedDrizzle","olCachedConnectedHeaders","olOnline"


if ($validStates -contains $session.ExchangeConnectionMode.ToString()) {...}



...總是失敗,因為這裡的連接模式由於某種原因是olCachedDisconnected。 如果手動打開 Outlook,我可以看到連接是可以的。 所有這一切都發生在內部網路中,所以沒有O365等。


回答 1:

我認為"$session.ExchangeConnectionMode.ToString()"會返回一個OlExchangeConnectionMode常量,它指示用戶交換帳戶的主連接模式。 這就像" 800"" 300"其他的。

你可以嘗試使用" 500"," 600"," 700"," 800"作為 $validStates 。 這裡有一個參考。https://docs.microsoft.com/en-us/office/vba/api/outlook.olexchangeconnectionmode


回答 2:

終於明白了。在查詢收件箱后解決問題,結果添加另一個「Start-Sleep -s 5 」。 似乎是腳本對 Outlook 的執行速度太快了




文章标签:OUT  Outlook  exchange  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语