检查谁是缓存模式客户端 - 本地 Exchange 2019、Office 365 客户端
Check who is Cached mode client - Exchange 2019 on premiss, Office365 Clients
最近几天我一直在寻找一种方法来报告或收集有关所有 outlook 用户的信息,其中哪些用户使用 Chache 模式,哪些用户在线。
如标题所述,我们在前提下使用 Exchange 2019,我们所有的客户都使用 Office365。
我在这里和那里找到了一些了解它的方法,但所有这些方法都与旧的 server/client 版本有关。喜欢:
- 一些脚本正在寻找一些注册表值。具体来说-“00036601”键,但不仅如此。因为有些提供了其他密钥,这些密钥本应用于 Office365 客户端,但在我的情况下却不存在。
- 使用涉及 Get-LogonStatistics 的 Exchange Shell,但此 cmdlet 在 Exchange 2019 中不起作用。
- 处理 RPC 客户端访问日志,但 RPC 连接在我们的网络中被阻止,Outlook 客户端通过 HTTPS 访问服务器。试图查看 HTTP MAPI 日志,但找不到可以告诉我客户端是否处于缓存模式的信息。
我发现唯一有效的方法是使用 client-side 脚本,基于用户身份,将 MAPI 加载到 Powershell 并找出它的状态:
$outlook = New-Object -com Outlook.Application
$namespace = $outlook.GetNamespace("MAPI")
$mailbox = $namespace.Stores | ? {$_.displayname.split("@")[0] -like $env:USERNAME}
$result = $env:USERNAME + ": " + $env:COMPUTERNAME + ": " + $mailbox.IsCachedExchange
$result | Add-Content -Path "\server\Network-Shared-Folder\chache.txt"
if (!(Test-Path C:\users$env:username\documents\cache)) {
New-Item -ItemType Directory -Name cache -Path C:\users$env:username\documents\
}
"Done" | Add-Content -Path C:\users$env:username\documents\cache\testresult.txt
我可以使用 SCCM 和我为检测方法编写的一些行来分发此脚本。所以我也可以 运行 它也可以 Invoke-Command 或其他方式。
但归根结底,我并不急于使用这种方式,因为它涉及客户端和身份,并且会干扰他自己在outlook上的工作。
我正在寻找不同的方式,server-side 最好是,来收集这些信息。
当然,它适用于 Exchange 2019 On-Premiss,以及通过 HTTPS 连接的 Office365 客户端。
感谢您的帮助。
Yosi.
我认为您不能从服务器执行此操作 - 缓存是 client-only 功能,而且单个 Outlook 配置文件可以在缓存模式下访问主邮箱,但在联机模式下可以访问代理邮箱.
不仅如此,对于某些功能,缓存的 Outlook 可能会在联机模式下打开服务器对象,例如搜索时,用户想要不在本地缓存的旧项目。
最近几天我一直在寻找一种方法来报告或收集有关所有 outlook 用户的信息,其中哪些用户使用 Chache 模式,哪些用户在线。
如标题所述,我们在前提下使用 Exchange 2019,我们所有的客户都使用 Office365。
我在这里和那里找到了一些了解它的方法,但所有这些方法都与旧的 server/client 版本有关。喜欢:
- 一些脚本正在寻找一些注册表值。具体来说-“00036601”键,但不仅如此。因为有些提供了其他密钥,这些密钥本应用于 Office365 客户端,但在我的情况下却不存在。
- 使用涉及 Get-LogonStatistics 的 Exchange Shell,但此 cmdlet 在 Exchange 2019 中不起作用。
- 处理 RPC 客户端访问日志,但 RPC 连接在我们的网络中被阻止,Outlook 客户端通过 HTTPS 访问服务器。试图查看 HTTP MAPI 日志,但找不到可以告诉我客户端是否处于缓存模式的信息。
我发现唯一有效的方法是使用 client-side 脚本,基于用户身份,将 MAPI 加载到 Powershell 并找出它的状态:
$outlook = New-Object -com Outlook.Application
$namespace = $outlook.GetNamespace("MAPI")
$mailbox = $namespace.Stores | ? {$_.displayname.split("@")[0] -like $env:USERNAME}
$result = $env:USERNAME + ": " + $env:COMPUTERNAME + ": " + $mailbox.IsCachedExchange
$result | Add-Content -Path "\server\Network-Shared-Folder\chache.txt"
if (!(Test-Path C:\users$env:username\documents\cache)) {
New-Item -ItemType Directory -Name cache -Path C:\users$env:username\documents\
}
"Done" | Add-Content -Path C:\users$env:username\documents\cache\testresult.txt
我可以使用 SCCM 和我为检测方法编写的一些行来分发此脚本。所以我也可以 运行 它也可以 Invoke-Command 或其他方式。 但归根结底,我并不急于使用这种方式,因为它涉及客户端和身份,并且会干扰他自己在outlook上的工作。
我正在寻找不同的方式,server-side 最好是,来收集这些信息。 当然,它适用于 Exchange 2019 On-Premiss,以及通过 HTTPS 连接的 Office365 客户端。
感谢您的帮助。 Yosi.
我认为您不能从服务器执行此操作 - 缓存是 client-only 功能,而且单个 Outlook 配置文件可以在缓存模式下访问主邮箱,但在联机模式下可以访问代理邮箱.
不仅如此,对于某些功能,缓存的 Outlook 可能会在联机模式下打开服务器对象,例如搜索时,用户想要不在本地缓存的旧项目。