win-acme项目中的RDS证书导入脚本更新指南
【免费下载链接】win-acme 项目地址: https://gitcode.com/gh_mirrors/win/win-acme
背景介绍
随着Windows Server 2025的发布,微软终于移除了长期被弃用的wmic.exe工具。这一变化影响了win-acme项目中与远程桌面服务(RDS)证书管理相关的几个PowerShell脚本,包括ImportRDS.ps1、ImportRDListener.ps1和ImportRDSFull.ps1。
问题分析
这些脚本原本使用wmic命令来设置远程桌面服务的SSL证书指纹:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="$($CertInStore.Thumbprint)"
在Windows Server 2025中,由于wmic.exe已被移除,上述命令将无法执行,导致脚本失效。
解决方案
建议改用纯PowerShell方式实现相同的功能,新代码如下:
$TScertHash = Get-WmiObject -Namespace "root\cimv2\TerminalServices" -Class "Win32_TSGeneralSetting"
$TScertHash.SSLCertificateSHA1Hash = "$($CertInStore.Thumbprint)"
$TScertHash.Put()
技术细节
-
Get-WmiObject:这是PowerShell中用于获取WMI(Windows Management Instrumentation)对象的cmdlet,比wmic更现代且功能更强大。
-
Win32_TSGeneralSetting类:这个WMI类专门用于管理终端服务的通用设置,包括SSL证书配置。
-
Put()方法:这是WMI对象的标准方法,用于将修改后的属性值写回系统。
兼容性考虑
虽然新代码在Windows Server 2025上工作正常,但需要注意:
- 旧版本Windows Server(如2008 R2)可能对PowerShell版本有不同要求
- 不同语言版本的Windows可能需要调整类名或命名空间
- PowerShell Core与Windows PowerShell在某些WMI操作上可能有差异
最佳实践建议
- 在更新生产环境前,先在测试环境中验证脚本
- 考虑添加错误处理逻辑,捕获可能的WMI异常
- 对于大规模部署,可以考虑将脚本迁移到更现代的CIM cmdlet(如Get-CimInstance)
总结
随着Windows Server的更新迭代,依赖传统工具如wmic.exe的脚本需要及时更新。本文提供的PowerShell替代方案不仅解决了Windows Server 2025的兼容性问题,还采用了更现代的WMI访问方式,为未来的系统升级打下了更好的基础。
【免费下载链接】win-acme 项目地址: https://gitcode.com/gh_mirrors/win/win-acme
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



