Blog Post

Security, Compliance, and Identity Blog
2 MIN READ

Generating Per Device license usage reports for TS License Servers running Windows Server 2008

MicrosoftSecurityandComplianceTeam's avatar
Sep 08, 2018
First published on CloudBlogs on Aug, 09 2007

In an earlier post , we showed how to create a per user license usage report in Windows Server 2008. Below we show how to create a per device license usage report.

On Windows Server 2003, a Per Device Terminal Services Client Access License (TS CAL) usage report could be generated using the Lsreport tool . In Windows Server 2008, the Lsreport tool is not supported. Instead, use the TS Licensing WMI interface to generate a Per Device TS CAL usage report in Windows Server 2008.

To generate a Per Device TS CAL usage report, you need to enumerate the Win32_TSIssuedLicense class instances on the license server. The following is a simple script that displays a list of issued Per Device TS CAL from a given license server with details like expiration date, etc.

'----------------------------------------------------------------------------

' Script to generate TS Per-Device license usage report.

' Requires Administrator privilege on the license server.

' Works only with WS08 TS License Server, as there is no WMI

' interface for TS Licensing on earlier versions.

'----------------------------------------------------------------------------

SET Args = WScript.Arguments

NameSpace = "rootcimv2"

ClassName = "Win32_TSIssuedLicense"

IF Args.Length > 2 THEN

Help

WSCRIPT.QUIT(1)

END IF

IF Args.Length = 1 THEN

Help

WSCRIPT.QUIT(1)

END IF

IF Args.Length = 2 THEN

' Checking if Server Name has been provided

CompResult = strComp(Args(0), "-server",1)

IF CompResult = 0 THEN

ServerName = Args(1)

ELSE

Help

WSCRIPT.QUIT(1)

END IF

ELSE

' if argc.length = 0, no arg supplied

ServerName = "."

END IF

GeneratePerDeviceReport

WSCRIPT.QUIT

'----------------------------------------------------------------------------

' FUNCTIONS

'----------------------------------------------------------------------------

SUB Help()

WSCRIPT.ECHO "Usage: GeneratePerDeviceReport.vbs [-Server ServerName]"

WSCRIPT.ECHO " If no ServerName is provided, then report generation"

WSCRIPT.ECHO " is attempted at host machine"

END SUB

SUB GeneratePerDeviceReport()

Err.Clear

Set ObjWMIService = GetObject("winmgmts:" & ServerName & "" & NameSpace )

IF ERR.NUMBER <> 0 THEN

WSCRIPT.ECHO "Unable to connect to the Namespace"

WSCRIPT.QUIT(2)

END IF

Set ObjectSet = ObjWMIService.ExecQuery ("Select * from Win32_TSIssuedLicense")

ReportCountBefore = ObjectSet.Count

' No Reports are present

IF ObjectSet.Count = 0 THEN

WSCRIPT.ECHO "No Per Device license issued"

WScript.Quit(5)

END IF

WSCRIPT.ECHO "KeyPackID,LicenseID,IssuedToMachine,HWID,ExpiryDate"

FOR EACH ObjectClass IN ObjectSet

WSCRIPT.ECHO ObjectClass.KeyPackId & "," & ObjectClass.LicenseId & "," & ObjectClass.sIssuedToComputer & "," & ObjectClass.sHardwareId & "," & ObjectClass.ExpirationDate

NEXT

END SUB

Per device license usage reports for all the discoverable license servers can be generated by getting the list of license servers using WMI method Win32_TerminalServiceSetting::FindLicenseServers () and running the above script for each license server.

Published Sep 08, 2018
Version 1.0
No CommentsBe the first to comment