Lync CAL Kontrolle
Microsoft lizenziert Lync pro Server, pro Client und pro Funktionsumfang. Da in der Regel nur wenige Server installiert werden und viel mehr Clients und CALs eine gehörige Position in der Kostenrechnung ausmachen, wird man schon genau abwägen, welche Funktion ein Anwender tatsächlich braucht. Schließlich hängen da schon ein paar Euros dran.
CAL Lizenz Übersicht
Abgesehen von Server und den Windows Clients, ist die "Client Access License" für den Anwender der entscheidenden Faktor. Hier kenn Lync drei Lizenzen:
- Standard CAL
Diese Lizenz benötigt jeder Anwender oder Device. - Enterprise CAL
Diese Lizenz ist additiv zur Standard-CAL zu erwerben, wenn der Anwender Konferenzen abhalten möchte. - Plus CAL
Diese Lizenz ist additiv zur Standard-CAL zu erwerben, wenn der Anwender "Telefonie" nutzen will, d.h. den Übergang zum Festnetz mit allen verbundenen Funktionen.
Microsoft hat zu den drei Lizenzen unterschiedliche Seiten. Letztlich müssen Sie für jedes Feature prüfen, welche Lizenz neben der Standard-CAL als Basis zusätzlich erforderlich ist:
Standard CAL | Enterprise CAL | Plus CAL |
---|---|---|
|
|
|
Da mit den Lizenzen natürlich auch Kosten verbunden sind, liegt der Wunsch nahe nur die erforderliche Nutzung zu lizenzieren. Damit wird es dann natürlich auch notwendig, diese Nutzung entsprechend zu konfigurieren und zu kontrollieren.
Funktionen konfigurieren
Die Nutzung einer CAL hängt nicht von der Installation einer Software oder das Eintragen eines Lizenzschlüssels ab, sondern ist rein durch Konfiguration umzusetzen. Die Anwender, die z.B. keine "Plus-CAL" haben, dürfen eben auch nicht für "Enterprise Voice" oder "RemoteCallControl" aktiviert werden. Etwas kniffliger ist es schon bei der Einstellung der Konferenzen, denn es müssen drei Einstellungen durchgeführt werden
Konferenz Policy
New-CsConferencingPolicy ` -Identity "NoConf" ` -AllowIPAudio $false ` -AllowIPVideo $false ` -AllowUserToScheduleMeetingsWithAppSharing $false ` -AllowAnonymousParticipantsInMeetings:$False ` -AllowPolls:$false ` -EnableAppDesktopSharing None ` -EnableDialinConferencing $false ` -EnableDataCollaboration $false ` -Description "Policy fuer Verbot von EnterpriseCAL"
- New-CsConferencingPolicy
http://technet.microsoft.com/de-de/library/gg413019.aspx - Update: Configuring Lync
Client Access Capabilities to
Meet Client Access License
Requirements
http://blogs.technet.com/b/nexthop/archive/2012/09/20/configuring-lync-client-access-capabilities-to-meet-client-access-license-requirements.aspx
Meeting Einstellung
Das ist aber noch nicht alles, denn per Default kann jeder Anwender in einem Meeting auch als Konferenzleiter auftreten. Auch dies kann über eine Konfiguration angepasst werden.
Set-CsMeetingConfiguration ` -DesignateAsPresenter:None
Leider kann man diese Option nur Global, pro Site oder pro Pool aber nicht pro Benutzer setzen. Insofern betrifft diese Einstellung auch die Personen, die Konferenzen nutzen dürften. Normal ist "Company", d.h. jeder firmeninterne Teilnehmer an einer Konferenz ist zugleich auch Konferenzleiter. Das Umstellen auf "None" bedeutet, dass der Einladende der Leiter ist aber er kann andere natürlich hochstufen. Aber wenn der Organisator nicht dabei ist, dann kann das Meeting nicht stattfinden.
Wichtig:
Wenn jemand "Konferenzleiter" wird, dann braucht
er natürlich eine Enterprise CAL, auch wenn er
nicht der Einladende war.
- Set-CsMeetingConfiguration
http://technet.microsoft.com/de-de/library/gg398648.aspx
Outlook Einstellung
Per Default installiert Lync auch das Outlook AddIn, damit Anwender ein Meeting im Outlook Kalender planen können. Wenn ein Benutzer natürlich keine Meetings starten darf, dann führt das Addin eher zu Fragen und Verwirrung. Es sollte idealerweise gar nicht installiert werden. Das ist aber unschön, wenn so zwei Office/Lync-Installationspakete zu erstellen sind. Sie können das Add-on aberr auch per Gruppenrichtlinien deaktivieren. Das hier der hier angeratene Weg. Die folgende "REG-Datei" deaktiviert das Outlook Konferenz Plug-in.
Windows Registry Editor Version 5.00 [HKEY_CURRENT_User\Software\Microsoft\Office\Outlook\Addins\UCAddin.UCAddin.1\} "LoadBehavior"=dword:00000002 [HKEY_CURRENT_User\Software\Microsoft\Office\Outlook\Addins\UCAddin.LyncAddin.1] "LoadBehavior"=dword:00000002
Diese Einstellungen können Sie natürlich auch als ADMX-Datei knvertiert einsetzen oder einfach als "Generischen Reg-Key" setzen lassen
Es ist generell eine gute Idee solche Zuweisungen von Berechtigungen über Gruppenmitgliedschaften zu steuern. Über Gruppen lassen sich einfach die Gruppenrichtlinien filtern. Die Zuweisung der Konferenz-Policy muss aber ein anderer Dienst übernehmen.
CAL-Bedarf per "Get-CSUser" auswerten
Wenn Sie über Richtlinien die Berechtigungen für bestimmte Funktionen korrekt konfiguriert haben, dann können Sie diese Einstellungen natürlich auch mit Get-CSUser auslesen. Das Commandlet liefert z.B. die Werte
PS C:\Users\user1> Get-CsUser -ResultSize 1 | gm TypeName: Microsoft.Rtc.Management.ADConnect.Schema.OCSADUser Name MemberType ---- ---------- ConferencingPolicy Property DisplayName Property Enabled Property EnterpriseVoiceEnabled Property LineServerURI Property LineURI Property Name Property PrivateLine Property RemoteCallControlTelephonyEnabled Property SipAddress Property
Interessant sind hier natürlich die Properties "EnterpriseVoiceEnabled" und "RemoteCallControlTelephonyEnabled" für die PlusCAL und die ConferencingPolicy für die Enterprise-CAL
write-host " Anzahl der User, die eine Standard CAL brauchen" (get-csUser).count write-host " Anzahl der User, die eine Plus-CAL brauchen" (Get-CsUser -Filter {(EnterpriseVoiceEnabled -eq $true) -or (RemoteCallControlTelephonyEnabled -eq $true)}).count write-host " Anzahl der User, die eine Enterprise-CAL brauchen" (Get-CsUser -Filter {(ConferencingPolicy -ne "NoConf")}.count
Gerade die letzte Abfrage funktioniert natürlich nur, wenn Sie auch ein passende Richtlinie "NoConf" haben, die beim Benutzer die Nutzung von Funktionen unterbindet, für die eine Enterprise CAL erforderlich wäre.
CAL-Bedarf per Monitoring Server auswerten
Neben der Auswertung über die konfigurierten und zugewiesenen Policies können Sie mit dem Lync Monitoring Server natürlich auch in Erfahrung bringen, welcher Benutzer welche Funktion tatsächlich verwendet hat. Dabei bleibt aber eine Unschärfe, da die Auswertung nur die vergangene Nutzung ausgibt aber nicht, ob der Anwender die Funktion nutzen könnte.
# Auslesen der aktuellen Monitoring Datenbank Get-CsService -MonitoringDatabase Identity : MonitoringDatabase:sql1.msxfaq.de SqlInstanceName : lync DependentServiceList : {Registrar:lync1.msxfaq.de} ServiceId : 1-MonitoringStore-1 SiteId : Site:Paderborn PoolFqdn : lync1.msxfaq.de Version : 6 Role : MonitoringDatabase
Die Abfrage der CDR-Datenbank gibt es das Commandlet "Get-CsClientAccessLicense".
Die Anwendung von "Get-CsClientAccessLicense" ist etwas seltsam, da man keine Liste bekommt, welcher Anwender welche Lizenz hat, sondern man muss jede Lizenzform einzelne abfragen und selbst zusammenbringen.
Fragt man den Status der Datenbank ab, dann kommen folgende Wert zurück.
TypeName: Microsoft.Rtc.Server.Cdr.ClientAccessLicense Name MemberType Definition ---- ---------- ---------- Date Property System.Nullable[datetime] Date {get;} DisplayDate Property string DisplayDate {get;} IpAddress Property string IpAddress {get;} LicenseDisplayName Property string LicenseDisplayName {get;} UserUri Property string UserUri {get;}
Für einen ersten Schuss reicht also das Aufführen des gleichen Befehls mit drei Parametern.
Get-CsClientAccessLicense ` -MonitoringDatabase "nawsql002.netatwork.de\lync" ` -LicenseName "Standard" ` -LicenseBasedType "UserBased" ` -StartDate (Get-Date).AddDays(-1) | ft -AutoSize UserUri IpAddress LicenseName Date ------- --------- ----------- ---- frank.carius@msxfaq.de 192.168.103.60 Standard
Get-CsClientAccessLicense ` -MonitoringDatabase "nawsql002.netatwork.de\lync" ` -LicenseName "Enterprise" ` -LicenseBasedType "UserBased" ` -StartDate (Get-Date).AddDays(-1) | ft -AutoSize UserUri IpAddress LicenseName Date ------- --------- ----------- ---- frank.carius@netatwork.de 84.245.158.167 Enterprise
Get-CsClientAccessLicense ` -MonitoringDatabase "nawsql002.netatwork.de\lync" ` -LicenseName "Plus" ` -LicenseBasedType "UserBased" ` -StartDate (Get-Date).AddDays(-1) | fl UserUri, LicenseName,Date -AutoSize UserUri LicenseName ------- ----------- +1123456789@netatwork.de;User=phone +4952468700971@netatwork.de;User=phone frank.carius@netatwork.de
Bei der Abfrage der PLUS-Lizenzen erscheinen natürlich auch "externe" Adressen. Um eine genaue Zählung vorzunehmen, sollte man mit Lync User ermitteln und dann die Lizenzen dazu zuordnen.
- Get-CSClientAccessLIcense
http://technet.microsoft.com/en-us/library/jj204853.aspx
Nutzt QoE Reports
Get-LyncCALStatus: Monitoring auswerten
So eine Lösung ist in PowerShell schnell zusammen gestellt, zumindest wenn man eine "Per User" Lizenz" hat. Bei einer Lizenzierung per "Device-CAL" eignet sich das Skript nicht.
Zuerst sucht es mit CSUser die Lync Anwender und mit Get-CsService -MonitoringDatabase die SQL-Datenbanken, die dann dreimal mit Get-CsClientAccessLicense abgeklappert werden. Die gefundenen Werte werden zusammen gefasst und dann ausgegeben.
Das Script zählt keine "Common Area Phones", da die keine Lync User sind. Es zählt auch nur die "Lync Client CAL" und keine Server-Lizenzen, Windows Core CALs oder SQL-CALs beim Enterprise Pool, die natürlich auch für Common Area Phones erforderlich sind.
Das Skript nutzt einfach die Lync Commandlets, welche in der Monitoring-Datenbank für jeden Anwender ermitteln, welche Funktionen dieser in der Vergangenheit genutzt hat. Per Default nutzt da Skript 30 Tage, was sie aber anpassen können
Durch den Einsatz von Lync Commandlets müssen Sie das Skript natürlich in einer Lync PowerShell aufrufen. Wundern Sie sich nicht, dass in dem Skript noch zusätzlicher Code rund um "ReportWeb" zu finden ist. Dazu später mehr.
Das Script liefert die Ausgabe sowohl auf der Konsole aus, als auch als Pipeline. Mit einem angehängten "OUT-FILE" können Sie die Daten einfach in eine Datei schreiben lassen.
Weitere Links
- Understanding and Enforcing
Licensing für the Lync Standard User CAL
Part 1: http://howdouc.blogspot.de/2011/09/understanding-and-enforcing-licensing.html
Part 2: http://howdouc.blogspot.de/2011/09/understanding-and-enforcing-licensing_21.html - Update: Configuring Lync
Client Access Capabilities to
Meet Client Access License
Requirements
http://blogs.technet.com/b/nexthop/archive/2012/09/20/configuring-lync-client-access-capabilities-to-meet-client-access-license-requirements.aspx