Сценарий Powershell может подключаться к событиям Lync, если установлен Lync SDK (в частности, dll под названием Microsoft.Lync.Модель.Dll.
Вы импортируете это с помощью заявления вроде этого:
import-module "C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Model.Dll"
Тогда вы получите объект client следующим образом:
$client = [Microsoft.Lync.Model.LyncClient]::GetClient()
Наконец, вам нужно подключиться к событиям, на которые вы хотели воздействовать:
$i = 0
# For each conversation
foreach ($con in $client.ConversationManager.Conversations) {
# For each participant in the conversation
$con.Participants | Where { !$_.IsSelf } | foreach {
Register-ObjectEvent -InputObject $_.Modalities[1] -EventName "InstantMessageReceived" -SourceIdentifier "person $i" -action { newInstantMessage }
$i++
}
}
Каждый объект разговора (открытое окно / вкладка чата) имеет как минимум двух участников (иногда) больше, приведенный выше код проверяет каждый из этих разговоров и каждого участника в них, но игнорирует участника, которым является "вы" (IsSelf). Затем этот код запускает функцию newInstantMessage каждый раз, когда кто-то отправляет вам сообщение.
Самое главное, что вам нужно что-то в конце скрипта powershell, чтобы не допустить его выхода, тогда как (1) {} достаточно. Наконец, вы можете захотеть перехватить событие ConversationAdded и внутри него зарегистрировать новые события InstantMessageReceived. В противном случае это будет работать только для существующих разговоров.
Для тех, кто не заинтересован в том, как и почему, я намерен сделать свой сценарий общедоступным в ближайшем будущем. Проверьте сайт Growl For Windows.