ThinPrint-Lizenz-Reporte generieren

242 views 0

Als ThinPrint-Service-Provider haben Sie seit Lizenzserver-Version 10.6 die Möglich­keit, die Zuordnung von ThinPrint-Lizenzen zu Nutzern automatisiert vornehmen zu lassen. Nutzer bekommen dann in dem Moment automatisch eine Lizenz zugewie­sen, wenn sie zum ersten Mal drucken.

Das vereinfacht die Administration der Lizen­zen extrem und ermöglicht die Abrechnung von ThinPrint exakt nach tatsächlicher Nutzung. Insbesondere in Umgebungen mit schwankenden Nutzerzahlen ist beides von sehr großem Vorteil.

Zusätzlich können Sie nach wie vor Nutzern und Nutzergruppen ihre Lizenzen manuell zuweisen (beispielsweise durch Import aus dem Microsoft Active Directory) oder auch von der automatischen Lizenzzuweisung ausnehmen.

Die Abrechnung von ThinPrint an Sie als Service-Provider erfolgt anhand eines monatlichen Reports, in dem Ihre Kunden für ThinPrint anonym bleiben. Sie als Ser­vice-Provider können zusätzlich einen zweiten internen Report erstellen, in dem Sie die Zuordnung der Lizenzen zu Ihren einzelnen Kunden ablesen können. Dieser Report ermöglicht Ihnen wiederum, eine genaue Abrechnung nach Nutzung Ihren Kunden gegenüber.

Das vorliegende Dokument erläutert, wie diese Reportdateien zur Ermittlung der aktivierten Anwender automatisiert generiert werden können.

Reportdatei generieren

Seit Version 10.6 des Lizenzservers ist es möglich, per Kommandozeile eine Report­datei generieren zu lassen. Dazu müssen Sie in das entsprechende Verzeichnis auf dem Lizenzserver wechseln. Standardmäßig befindet sich das Kommando in folgen­dem Verzeichnis:

C:\Program Files\Common Files\ThinPrint

  • –  Starten Sie die Kommandozeile mit administrativen Rechten. Das aufzurufende Kommando lautet:

cclucs.exe -report [FILE]

[FILE] steht für Pfad und Dateiname. Beispiel:

cclucs.exe -report c:\temp\ThinPrintLicenseReport.xml

Administrator: Command Prompt

Reportdatei im .xml-Format ausgeben

Die Angabe des Dateisuffixes ist beliebig. Inhaltlich wird aber immer XML erstellt. Insofern empfiehlt es sich, als Format .xml zu wählen.

Inhalt der Reportdatei

Die Datei enthält am Ende eine Signatur, welche die Erstellung gegenüber ThinPrint verifiziert. Für eine Weiterverarbeitung oder den Import in andere Applikationen zu internen Zwecken muss die Signatur gegebenenfalls entfernt werden.

Inhalt der Reportdatei

Inhalt der Reportdatei

Reportdatei automatisch erzeugen

Eine automatische Erstellung der Datei oder ihr periodisches Update kann mit Windows-Bordmitteln – z. B. dem Task Scheduler – erfolgen. Es folgt ein Beispiel für ein tägliches Update um 02:00 Uhr.

Bitte beachten: Einträge werden nicht überschrieben, sondern mit jeder Erstellung so lange ergänzt, wie sich die Reportdatei im selben Ordner befindet. Der Kommandozeilenaufruf lässt sich in eine Batchdatei – z. B. RunReport.bat – auslagern:

cd C:\Program Files\Common Files\ThinPrint

cclucs -report c:\temp\ThinPrintLicenseReport.xml

Diese Datei wird anschließend für die regelmäßig auszuführende Aufgabe verwendet.

  • Wählen Sie im Task Scheduler: Create Basic Task.
  • Geben Sie an, wann die Task periodisch ausgeführt werden soll.
Task im Task-Scheduler anlegen

Task-Scheduler: Task anlegen

  • Wählen Sie die oben generierte Batchdatei aus, hier: RunReport.bat
Batchdatei im Task-Scheduler wählen

Task-Scheduler: Batchdatei wählen

  • Kontrollieren Sie Ihre Einstellungen auf den Reitern Triggers und Actions.
Task-Scheduler: Periode auf dem Reiter "Triggers."

Task-Scheduler: Periode auf dem Reiter Triggers

Task-Scheduler: Batchdatei auf dem Reiter Actions.

Task-Scheduler: Batchdatei auf dem Reiter Actions

Mit dieser einfachen Aufgabenplanung wird die Reportdatei täglich um 2 Uhr nachts aktualisiert.

Inhaltlich wird in die Datei der ThinPrint-Lizenzschlüssel mit Registrierungs- und Aktivierungsschlüssel sowie die Anzahl der aktivierten Anwender pro Domäne zum Zeitpunkt des Kommandoaufrufs geschrieben.

Domäne bleibt anonym

Die Domäne ist dabei nur als SID sichtbar und somit für ThinPrint anonymisiert. Für interne Zwecke kann man den Klarnamen der jeweiligen Domäne mit geeigneten Tools – beispielsweise PSGetSID von Sysinternals – ermitteln.

Klarnamen der Domäne (für interne Zwecke) ermitteln.

Klarnamen der Domäne (für interne Zwecke) ermitteln.

Style-Sheet

Eine übersichtlichere Darstellung lässt sich beispielsweise unter Verwendung der Transform-Funktion von Excel erreichen. Dazu muss ein entsprechendes Style-sheet – hier: ThinPrintLicenseReport.xsl – erstellt werden:

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="https://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
 <html>
 <body>
   <table border="2" bgcolor="yellow">
     <tr>
       <th>Domain</th>
       <th>Date</th>
       <th>UserCount</th>
     </tr>
      <xsl:for-each select="LicenseReport/Product/Domain[@DomainSid!='S-1-5-32']">
     <tr>
       <td><xsl:value-of select="@DomainSid"/></td>
       <td><xsl:value-of select="@Date"/></td>
       <td><xsl:value-of select="@UserCount"/></td>
     </tr>
     </xsl:for-each>
   </table>
 </body>
 </html>
</xsl:template>
</xsl:stylesheet>

 

XML-Format in gut leserliche Form konvertieren

Mittels PowerShell-Skript lässt sich die ursprüngliche Reportdatei (im XML-Format) anschließend in eine optische besser lesbare Form konvertieren (hier als ThinPrintLicenseReport.ps1):

param ($xml, $xsl, $output)
if (-not $xml -or -not $xsl -or -not $output)
{
Write-Host "& .\xslt.ps1 [-xml] xml-input [-xsl] xsl-input [-output] transform-output"
exit;
}
trap [Exception]
{
Write-Host $_.Exception;
}
$tempFile = [System.IO.Path]::GetTempFileName();
(Get-Content $xml) -notmatch "[0-9a-f].*" | Out-File $tempFile
Import-Module ActiveDirectory
<# Get Distinguished Name #>
$objDomain = Get-ADDomain
$objDomainDN = (Get-ADDomain).DistinguishedName

<# Get current Domain SID #>
$CurrentDomainSID = (Get-ADDomain).DomainSID

<# Get Forest Domains #>
$objForestDomains = (Get-ADForest).Domains

<# Replace all SIDs in $tempFile that match any of the Forest Domains #>
foreach ($Domain in $objForestDomains) {
try {
$DomainResult = Get-ADDomain -server $Domain -ErrorAction SilentlyContinue | select DNSroot, DomainSID -ErrorAction SilentlyContinue
$xmlContent = (Get-Content $tempFile)
If ($xmlContent -match ($DomainResult | select -ExpandProperty DomainSID)) {
$xmlContent = $xmlContent -replace ($DomainResult | select -ExpandProperty DomainSID), ($DomainResult | select -ExpandProperty DNSroot)
$xmlContent | Out-File $tempFile
}
} catch {
Write-Host ("Exception while contacting Domain " + $Domain + ".")
Write-Host ($Error[0].Exception)
}
}
#>
<# Get Trusted Domains #>
$objTrustedDomains = Get-ADObject -SearchBase "CN=System,$objDomainDN" -SearchScope OneLevel -LDAPFilter "(&(objectClass=trustedDomain)(!trustAttributes=32))" -Property name, securityIdentifier
$TrustedDomainSIDs = $objTrustedDomains | select -ExpandProperty securityIdentifier
$TrustedDomName = Get-ADObject -SearchBase "CN=System,$objDomainDN" -SearchScope OneLevel -LDAPFilter "(&(objectClass=trustedDomain)(!trustAttributes=32))" -Property name, securityIdentifier | select -ExpandProperty Name
<# Replace all SIDs in $tempFile that match any of the Trusted Domains #>
foreach ($TrustedDomain in $objTrustedDomains) {
try {
$xmlContent = (Get-Content $tempFile)
If ($xmlContent -match ($TrustedDomain | select -ExpandProperty securityIdentifier)) {
$xmlContent = $xmlContent -replace ($TrustedDomain | select -ExpandProperty securityIdentifier), ($TrustedDomain | select -ExpandProperty Name)
$xmlContent | Out-File $tempFile
}
} catch {
Write-Host ("Exception while contacting Domain " + $Domain + ".")
Write-Host ($Error[0].Exception)
}
}
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load($xsl);
$xslt.Transform($tempFile, $output);
remove-item -path $tempFile;

Eine entsprechende Namensgebung für die Skripte vorausgesetzt, würde der Aufruf folgendermaßen lau­ten:

  .\ThinPrintLicenseReport.ps1 C:\temp\ThinPrintLicenseReport.xml c:\temp\ThinPrintLicenseReport.xsl c:\temp\ThinPrintLicenseReport.html

Die Browser-Darstellung der erzeugten Datei ThinPrintLicenseReport.html zeigt das folgende Bild:

Darstellung der .html-Datei in einem Internet-Browser

Darstellung der .html-Datei in einem Internet-Browser

Zusammenfassung

Für die Anzeige des Lizenzverbrauchs gegenüber der ThinPrint GmbH senden Sie uns die Reportdatei im XML-Format zu – z. B. ThinPrintLicenseReport.xml.

Für die interne Abrechnung – bzw. die Abrechnung gegenüber Ihren Kunden – kön­nen Sie Reports erzeugen, die den Lizenzverbrauch pro Domäne anzeigen. Dazu kön­nen Sie das oben aufgeführte Beispielskript verwenden.

Kann die Domäne nicht aufgelöst werden, erscheint anstelle des Domänennamens die SID der Domäne.

Previous Page
Next Page

War dies hilfreich?