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

Generate Terminal Service license report and send automatically via Email

在将许可证报告发送到 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   :

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

约翰祖。

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

如您所述,这是一个潜在的环境问题。所以,这不是这个问题的正确论坛。我建议使用 SuperUser 并关注此讨论和答案。

The problem A license database for remote desktop in Windows 2012 got corrupted as helpdesk executes several times an script in powershell used to install licenses for Windows 2008 R2 and then for Windows 2012

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

因此,既然您已经怀疑环境问题,那么如果超出上述解决范围,则以支持的最谨慎的方法纠正这些问题。

资源更新

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

Win32_TSLicenseReport class 提供在远程桌面许可证服务器上生成的每用户远程桌面服务客户端访问许可证 (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_TSLicenseReportclass

的 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 class

[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 行的变量以适合您的 environment.The 下面的代码片段生成新报告。如果你不希望它为 https://gallery.technet.microsoft.com/scriptcenter/Get-RDS-licenses-issued-to-87389868

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

Win32_TSLicenseReportclass 的 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

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