Я пытаюсь автоматизировать установку новых сертификатов SSL на Windows Server с помощью PowerShell. Я сделал большую часть этого, но у меня есть небольшая проблема. Когда я пытаюсь обновить сертификат 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