帮酷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  |  如果智培  |  酷兔英语