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.0MicrosoftSecurityandComplianceTeam
Iron Contributor
Joined September 05, 2018
Microsoft Security Blog
Follow this blog board to get notified when there's new activity