获取Skype以了解Powershell中的业务用户状态/可用性问题

获取Skype以了解Powershell中的业务用户状态/可用性问题,powershell,skype-for-business,lync-client-sdk,Powershell,Skype For Business,Lync Client Sdk,我正在使用powershell通过使用以下代码获取某些用户的状态/可用性: Import-Module "C:\...\Microsoft.Lync.Model.dll" $Client = [Microsoft.Lync.Model.LyncClient]::GetClient() $Contact = $Client.ContactManager.GetContactByUri( $args[0] ) Write-Host $Contact.GetContactInformation("

我正在使用powershell通过使用以下代码获取某些用户的状态/可用性:

Import-Module "C:\...\Microsoft.Lync.Model.dll"

$Client = [Microsoft.Lync.Model.LyncClient]::GetClient()

$Contact = $Client.ContactManager.GetContactByUri( $args[0] )
Write-Host $Contact.GetContactInformation("Activity")
假设我是路过这里testuser@testcompany.com作为脚本参数

如果我运行这个脚本,它将返回“Presence unknown”。但是,如果我手动打开Skype客户端并搜索用户,我可以看到他们的可用性(假设该用户设置为可用)

现在,如果我在Skype中搜索脚本后再次运行脚本,脚本将通过向控制台打印“可用”返回正确的结果。脚本将持续返回正确的结果,直到我重新启动Skype。此时,它将再次返回“状态未知”,直到我在Skype中搜索该用户

如果用户在Skype中的“我最近的对话”中,而我只是查看“我最近的对话”选项卡,而不是搜索它们,这就足以让脚本开始返回正确的结果


在从我的客户端手动将其加载到缓存(?)之前,它似乎无法查询其可用性。你知道为什么会发生这种情况,或者我如何让它返回正确的结果而不首先手动搜索用户吗?

看起来你必须订阅用户状态信息。Lync SDK MSDN文档在中概述了解决方案


类似的解决方案在

我找到的唯一解决办法是与目标用户创建如下对话:

Import-Module "Microsoft.Lync.Model.dll"
$client = [Microsoft.Lync.Model.LyncClient]::GetClient()
$contact = $client.ContactManager.GetContactByUri($email)
$convo = $client.ConversationManager.AddConversation()
$convo.AddParticipant($contact) | Out-Null
Write-Host $contact.GetContactInformation("Activity")
$convo.End() | Out-Null
它似乎不会导致任何IM窗口在用户端弹出


查看订阅解决方案的powershell代码将非常有趣

这正是我所需要的-您还可以在Microsoft论坛上找到一个与我的问题完全匹配的问题(我花了大半个小时的时间尝试这样做)。非常感谢。