我正在尝试使用 powershell 自动将新的 SSL 证书安装到 Windows Server 上。我已经完成了大部分工作,但遇到了一个小问题。当我尝试更新终端服务 SSL 证书时,我不断收到错误,我无论如何也想不出原因。
$NewCert = Import-Certificate -FilePath $FileName -CertStoreLocation cert:\LocalMachine\My
$RDPInstance = Get-CimInstance -ClassName Win32_TSGeneralSetting -Namespace ROOT\CIMV2\TerminalServices
$RDPInstance.SSLCertificateSHA1Hash = $NewCert.Thumbprint
Set-CimInstance -CimInstance $RDPInstance -Passthru
我从微软网站上获取了大部分代码以便能够进行此更新,但它引发了错误:
Set-CimInstance : Invalid parameter
At line:1 char:1
+ Set-CimInstance -CimInstance $RDPInstance -Passthru
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Win32_TSGeneral...me = "RDP-Tcp"):CimInstance) [Set-CimInstance], CimException
+ FullyQualifiedErrorId : HRESULT 0x80041008,Microsoft.Management.Infrastructure.CimCmdlets.SetCimInstanceCommand
我尝试了几个版本的 Set-CimInstance,但它们似乎都抛出了相同的无效参数。
答案1
啊!我发现了问题。事实证明,有些属性是只读的,所以我可以将整个实例放回去,这就是失败的地方。我已经更改了它,所以现在只是更新属性 SSLCertificateSHA1Hash。
Set-CimInstance -CimInstance $RDPInstance -Property @{SSLCertificateSHA1Hash=$Thumbprint} -PassThru