2013-04-25 19 views

Odpowiedz

12

Zgodnie z dokumentacją funkcja Lync binarna does not offer. Możesz jednak użyć narzędzia Lync SDK, aby osiągnąć to, co chcesz, pisząc małą aplikację pomocniczą (lub zawierającą odpowiedni kod w bieżącej aplikacji).

Według MVP w Microsoft forums, to również nie jest dostępne natychmiast po wyjęciu z opakowania.

Jednakże, zgodnie z dokumentacją, skrypt PowerShell jak ten powinien być w stanie wykonać trick:

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) 

Ten skrypt wymaga Lync SDK lub redystrybucyjnego Lync SDK do zainstalowania.

Wiele z tych informacji pochodzi z here.

+0

Lync jest do bani. Chociaż to działa, zostanie zignorowane, gdy tylko komputer zostanie zablokowany i nieaktywny, z MSDN: _ Te programowo ustawione wartości dostępności są nadpisywane przez klienta Lync 2013, gdy lokalny użytkownik nie dotykał klawiatury ani myszy przez jakiś czas._ – t3chb0t

3

Powyższy wpis nie działa. Więcej modułów DLL jest potrzebnych. Ale wprowadziłem poniższe zmiany, aby działały. Następnie możesz użyć TaskSch, aby uruchomić go automatycznie. Nadal wymaga zainstalowania pakietu Lync SDK w 2010 roku.

Ustaw 15550 jako "Off-Work", a nie "Away". Bardziej użyteczny.

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

Uwaga Ten kod nie sprawdza czy Lync jest podpisany w Jeśli nie jest to nie będzie działać.

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) 
+1

2013 Lync SDK - biblioteki DLL znajdują się w C: \ Program Files (x86) \ Microsoft Office \ Office15 \ LyncSDK \ Assemblies \ Desktop \ –

+0

Powyższy skrypt Pete'a działa – Martin

1

Ok - To, co zrobiłem

  1. Install 2013 SDK (ten działa ze Skype for Business zbyt BTW)
  2. użyć kodu z Petem powyżej, za wyjątkiem zmiany zborach katalogi C:\Program Files (x86)\Microsoft Office\Office15\LyncSDK\Assemblies\Desktop\ dla oba z tych
  3. musiałem dodać pliki konfiguracyjne na tej stronie (uruchom jako administrator http://tfl09.blogspot.com/2010/08/using-newer-versions-of-net-with.html
  4. Zmień wiadomość w skrypcie Pete'a
  5. Zautomatyzuj za pomocą Task Scheduler skrypt .ps1
+0

Również jeśli używasz .ps1 jako Visual Studio post buduj działanie na pewno, że ustawiono execpolicy dla wersji PowerShell x86. – Sager

Powiązane problemy