Назад | Перейти на главную страницу

Не удается записать в ROOT \ CIMV2 \ TerminalServices через PowerShell

Я пытаюсь автоматизировать установку новых сертификатов 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