无法通过 powershell 写入 ROOT\CIMV2\TerminalServices

无法通过 powershell 写入 ROOT\CIMV2\TerminalServices

我正在尝试使用 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

相关内容