生成终端服务许可报告并通过电子邮件自动发送

时间:2018-08-05 16:16:08

标签: powershell windows-server-2012 terminal-services

在将许可报告发送到Mail之前。我确实在许可证服务器上直接尝试了此方法,作为调试PS C:\Windows\system32> Invoke-WmiMethod -Class Win32_TSLicenseReport -Name GenerateReportEx的一种方法,它返回了以下

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
FileName         : PER-USER_20160524-213433-748.dat
ReturnValue      : 0
PSComputerName   :

怀疑许可证服务器数据库已损坏。有什么建议吗?此时是否需要重建数据库。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

祖宗(John zuh)

这不是PS问题或代码问题,这是我们在此提供的帮助。 好吧,您还没有显示您的PS报告和邮件代码/问题。

正如您所指出的,这是一个潜在的环境问题。因此,这不是该问题的正确论坛。我建议超级用户并按照此讨论和回答。

  

问题Windows 2012中的远程桌面许可证数据库出现了   帮助台在Powershell中多次执行脚本时损坏   用于安装Windows 2008 R2和Windows 2012的许可证

     

https://superuser.com/questions/1028042/how-to-fix-a-corrupted-rds-licenses-database

因此,由于您已经怀疑环境问题,因此,如果超出上述范围,请以最谨慎的方法更正这些问题。

资源更新

如上所述,还有其他资源可以帮助您。采用默认的报告类,生成报告并将其作为文本文件或html附加到电子邮件中。此时,您仅使用了Send-MailMessage cmdlet的基础。

Win32_TSLicenseReport类 提供在远程桌面许可证服务器上生成的“远程桌面服务每用户”客户端访问许可证(RDS每用户CAL)使用情况报告的实例,以及许可证报告的生成,获取和删除操作的方法。

[dynamic, provider("Win32_WIN32_TERMSERVLICENSING_Prov"), AMENDMENT]
class Win32_TSLicenseReport
{
    string   FileName;
    uint32   LicenseUsageCount;
    uint32   InstalledLicenses;
    DATETIME GenerationDateTime;
    uint32   ScopeType;
    string   ScopeValue;
    uint32   Version;
};

https://docs.microsoft.com/en-us/windows/desktop/TermServ/win32-tslicensereport

Win32_TSLicenseReport类的GenerateReport方法

[GenerateReport从Windows Server 2012开始不再可用。请使用GenerateReportEx。]

不支持此方法。

Windows Server 2008 R2和Windows Server 2008:在远程桌面许可证服务器上生成当前的每用户许可证使用情况报告。

https://docs.microsoft.com/en-us/windows/desktop/TermServ/generatereport-win32-tslicensereport

根据您的评论,这是您已经知道的...

Get-WmiObject Win32_TSLicenseKeyPack类

[dynamic, provider("Win32_WIN32_TERMSERVLICENSING_Prov"), AMENDMENT]
class Win32_TSLicenseKeyPack
{
  uint32   KeyPackId;
  string   Description;
  uint32   KeyPackType;
  uint32   ProductType;
  string   ProductVersion;
  uint32   ProductVersionID;
  uint32   TotalLicenses;
  uint32   IssuedLicenses;
  uint32   AvailableLicenses;
  DATETIME ExpirationDate;
  uint32   AccessRights;
  string   TypeAndModel;

};

https://docs.microsoft.com/en-us/windows/desktop/TermServ/win32-tslicensekeypack

获取颁发给所有受信任域的RDS许可证

此脚本将获取从本地计算机颁发的RDS许可证,该许可证已颁发给所有受信任的域。需要修改第1行到第12行中的变量以适合您的环境。下面的代码段生成了新报告。如果您不希望它为 https://gallery.technet.microsoft.com/scriptcenter/Get-RDS-licenses-issued-to-87389868

$NewReport = Invoke-Wmimethod -class win32_tslicensereport -name generatereport -argumentlist @(3,0)
Win32_TSLicenseReport类的

FetchReportEntries方法 从报告中检索“远程桌面服务每用户”客户端访问许可证(RDS每用户CAL)的详细信息。每个条目代表当前正在使用的RDS每用户CAL。 https://docs.microsoft.com/en-us/windows/desktop/TermServ/fetchreportentries-win32-tslicensereport

您没有说您正在使用的服务器版本,而是。您还可以使用终端服务授权报告工具(Lsreport.exe)。 在这里,您需要编写一个自定义脚本来运行Lsreport.exe工具并解析其输出。

您可以下载旧的W2K3ResKit来获取它。 https://www.microsoft.com/en-us/download/details.aspx?id=17657

lsreport /?

Write information about licenses granted by Terminal Server License Servers.

lsreport [/F filename] [/D start [end]] [/T] [/W] [/?] [serverlist]

  /F filename         Directs output to be written to a file named filename.
                      (filename defaults to lsreport.txt)
  /D start [end]      Prints only licenses that were in force between start
                      and end.  (end defaults to today)
  /T                  Directs only temporary licenses to be written.
  /W                  Directs the hardware id to be written to the text file. (.Net Servers Only)
  /?                  Prints this program summary.
  serverlist          A list of license servers to query.  If not specified,
                      a list will be obtained from a domain controller.

Examples:
  lsreport
  lsreport /T NTLS-1 NTLS-2

另请参阅: http://www.techrepublic.com/article/step-by-step-monitor-terminal-services-licenses-with-lsreportexe/1058268

另请参阅:

使用Windows PowerShell管理远程桌面许可 https://cloudblogs.microsoft.com/enterprisemobility/2010/04/07/manage-remote-desktop-licensing-by-using-windows-powershell

Windows PowerShell的远程桌面服务提供程序 https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee791871(v=ws.10)