Windows
無法通過 powershell 寫入 ROOTCIMV2TerminalServices
我正在嘗試使用 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
我從 Microsoft 的網站上獲取了大部分程式碼,以便能夠進行此更新,但它會引發錯誤:
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,但它們似乎都拋出了相同的 Invalid 參數。
啊! 我發現了這個問題。事實證明,某些屬性是只讀的,因此我可以將整個實例重新放回原處,這就是它失敗的地方。我已經改變了它,所以它現在只是更新屬性 SSLCertificateSHA1Hash。
Set-CimInstance -CimInstance $RDPInstance -Property @{SSLCertificateSHA1Hash=$Thumbprint} -PassThru