# Get-LyncCalKontrolle # # Auslesen der benutzten lync Lizenzen basierend auf Lync Monitoring # Aktuell wird nur GENAU EIN Monitoring Server in der Topologie unterstuetzt. # # 20131004 FC Version 1.0 Initial param ( $querydays = 30, # Days to query the Monitoring Database [switch]$reportweb # set to true to generate html output ) write-host "get-get-LyncCalKontrolle: start" if ($reportweb) { write-host "get-get-LyncCalKontrolle: Found Switch: reportweb" Invoke-Expression ($config.main.includepath+"include-lync.ps1") } write-host "get-get-LyncCalKontrolle: Initialize Hashtable" [hashtable]$sipUser=@{} $standard = 0 $enterprise = 0 $plus = 0 write-host "get-get-LyncCalKontrolle: Loading CSUser" foreach ($csUser in (get-csUser -resultsize unlimited)) { $newpso = New-Object PSObject -Property @{ sipUser = $csUser.sipaddress standard = $false enterprise = $false plus = $False } $sipUser.add($csUser.SipAddress.tostring().tolower().replace("sip:",""),$newpso) } write-host "get-get-LyncCalKontrolle: Total Users::" $.sipUser.count write-host "get-get-LyncCalKontrolle: Loading Monitoring SQL-Databases" $sqlserver = (Get-CsService -MonitoringDatabase).Identity.replace("MonitoringDatabase:","") $sqlinstance = (Get-CsService -MonitoringDatabase).SqlInstanceName $Monitoringdatabase = $sqlserver + "\" +$sqlinstance write-host "get-get-LyncCalKontrolle: MonitoringDB:"$Monitoringdatabase write-host "get-get-LyncCalKontrolle: Loading Standard CALS" foreach ($csUser in (Get-CsClientAccessLicense ` -MonitoringDatabase $Monitoringdatabase ` -LicenseName "Standard" ` -LicenseBasedType "UserBased" ` -StartDate (Get-Date).AddDays(-$querydays))) { Write-host " Processing STD:" $csUser.UserUri -nonewline if ($sipUser.contains($csUser.UserUri)) { $sipUser.item($csUser.UserUri).Standard = $true Write-host " Standard CAL" $standard+=1 } else { write-host "NoSTD" } } foreach ($csUser in (Get-CsClientAccessLicense ` -MonitoringDatabase $Monitoringdatabase ` -LicenseName "Enterprise" ` -LicenseBasedType "UserBased" ` -StartDate (Get-Date).AddDays(-$querydays))) { Write-host " Processing ENT:" $csUser.UserUri -nonewline if ($sipUser.contains($csUser.UserUri)) { $sipUser.item($csUser.UserUri).Enterprise = $true Write-host " Enterprise CAL" $enterprise +=1 } else { write-host "NoEnterprise" } } foreach ($csUser in (Get-CsClientAccessLicense ` -MonitoringDatabase $Monitoringdatabase ` -LicenseName "Plus" ` -LicenseBasedType "UserBased" ` -StartDate (Get-Date).AddDays(-$querydays))) { Write-host " Processing PLUS:" $csUser.UserUri -nonewline if ($sipUser.contains($csUser.UserUri)) { $sipUser.item($csUser.UserUri).Plus = $true Write-host " Plus CAL" $plus +=1 } else { write-host "NoPlus" } } write-host "get-get-LyncCalKontrolle: Summary:Std: " $standard write-host "get-get-LyncCalKontrolle: Summary:Ent: " $enterprise write-host "get-get-LyncCalKontrolle: Summary:Plus:" $plus write-host "get-get-LyncCalKontrolle: Sending Output to pipeline" if ($reportweb) { write-host "get-get-LyncCalKontrolle: Sending HTML-Output to pipeline" "

Lync CAL Status

" "

Uebersicht der Benutzer und der von ihnen verwenden CALs

" "

Summary:Std: $standard
" "Summary:Ent: $enterprise
" "Summary:Plus: $plus

" ($sipUser.Values | select sipUser,standard,enterprise,plus | ConvertTo-Html -Fragment) } else { write-host "get-get-LyncCalKontrolle: Sending Output to pipeline" $sipUser.Values } write-host "get-get-LyncCalKontrolle: End"