9

是否可以通过脚本更改 Microsoft Lync 2010 的状态?

我想要在 Win XP 上运行的脚本,并在固定间隔后将状态更改为可用。尝试在互联网上搜索,但没有成功找到一个。

4

4 回答 4

12

根据文档,Lync 二进制文件不提供该功能。但是,您可以使用Lync SDK通过编写一个小型帮助应用程序(或将相关代码合并到您当前的应用程序中)来实现您想要的。

根据Microsoft 论坛中的 MVP ,这也不是开箱即用的。

但是,根据文档,像这样的 PowerShell 脚本应该能够做到这一点:

import-module "C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Controls.Dll"

$availability = [Microsoft.Lync.Controls.ContactAvailability]::Available

$contactInfo = new-object 'System.Collections.Generic.Dictionary[Microsoft.Lync.Model.PublishableContactInformationType, object]'
$contactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::Availability, 
                $availability)

$ar = $self.BeginPublishContactInformation($contactInfo, $null, $null)
$self.EndPublishContactInformation($ar)

此脚本需要安装 Lync SDK 或 Lync SDK 可再发行组件。

大部分信息都是从这里获取的。

于 2013-05-02T16:54:23.720 回答
3

上面的帖子不起作用。需要更多的 DLL 模块。但是我在下面进行了以下更改,因此可以正常工作。然后你可以使用 TaskSch 让它自动运行。仍然需要安装 2010 Lync SDK。

将 15550 设置为“下班”而不是“离开”。更有用。

请参阅 - http://blogs.technet.com/b/heyscriptingguy/archive/2012/08/11/weekend-scripter-use-the-windows-task-scheduler-to-run-a-windows-powershell-script。 aspx

请注意,此代码不会检查 LYNC 是否已登录。如果不是,它将不会运行。

import-module "C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Controls.Dll"
import-module "C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Model.Dll"

# Obtain the entry point to the Lync.Model API
$client = [Microsoft.Lync.Model.LyncClient]::GetClient()

$self = $client.Self;

#Set Details of Personal Note and Availability
#Useful availability codes for use below - 3500 Available, 15500 Away (converted to "Off Work" in this script by setting activity ID), 6500 Busy, 9500 Do not disturb, 12000 Be Right Back) 
$availability = 3500
$date = [DateTime]::Now
$message = "Remote Work. UK Time +5 hours EST (US), -5.5 IST (India). Availability script last run $date"

#Publish personal note and presence availability of the local user
$contactInfo = new-object 'System.Collections.Generic.Dictionary[Microsoft.Lync.Model.PublishableContactInformationType, object]'
$contactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::PersonalNote, 
            $message)
$contactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::Availability, 
            $availability)
If ($availability -eq 15500) {$contactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::ActivityId, 
            "off-work")}

$ar = $self.BeginPublishContactInformation($contactInfo, $null, $null)
$self.EndPublishContactInformation($ar)
于 2014-10-11T15:27:59.130 回答
1

好的 - 这就是我所做的

  1. 安装 2013 SDK(这也适用于 Skype for Business 顺便说一句)
  2. 使用上面 Pete 的代码,除了将程序集目录更改C:\Program Files (x86)\Microsoft Office\Office15\LyncSDK\Assemblies\Desktop\
  3. 我必须为每个页面添加配置文件(以管理员身份运行http://tfl09.blogspot.com/2010/08/using-newer-versions-of-net-with.html
  4. 更改 Pete 脚本中的消息
  5. 使用任务计划程序自动化.ps1脚本
于 2015-07-09T23:34:08.890 回答
1

对于 Lync 2013,此 PowerShell 脚本有效。您需要先安装Lync 2013 SDK。SDK 安装程序可能会说您需要安装 Silverlight 4,但不必担心,这不是必需的。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -Confirm:$false
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -Confirm:$false

Import-Module "C:\Program Files\Microsoft Office\Office15\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Model.dll"
Import-Module "C:\Program Files\Microsoft Office\Office15\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Controls.dll"

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

$availability = [Microsoft.Lync.Controls.ContactAvailability]::Away

$contactInfo = (New-Object "System.Collections.Generic.Dictionary[Microsoft.Lync.Model.PublishableContactInformationType,object]") -As "System.Collections.Generic.IEnumerable[System.Collections.Generic.KeyValuePair[Microsoft.Lync.Model.PublishableContactInformationType,object]]"
$contactInfo.Add([Microsoft.Lync.Model.PublishableContactInformationType]::Availability, $availability)

$ar = $client.Self.BeginPublishContactInformation($contactInfo, [System.AsyncCallback]$null, [object]$null)
$client.Self.EndPublishContactInformation($ar)

这会将状态设置为“消失”,但您可以更改[Microsoft.Lync.Controls.ContactAvailability]::Away为此[Microsoft.Lync.Controls.ContactAvailability]::None状态以重置状态。

于 2018-04-19T17:41:44.420 回答