在将许可报告发送到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 :
怀疑许可证服务器数据库已损坏。有什么建议吗?此时是否需要重建数据库。任何建议将不胜感激。
答案 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
另请参阅:
使用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)