Okazuje się, że wiele danych konfiguracyjnych dla RDSH jest przechowywanych w Win32_TSGeneralSetting
klasie w WMI w root\cimv2\TerminalServices
przestrzeni nazw. Do skonfigurowanego certyfikatu dla danego połączenia odwołuje się wartość odcisku palca tego certyfikatu dla właściwości o nazwie SSLCertificateSHA1Hash
.
AKTUALIZACJA: Oto uogólnione rozwiązanie Powershell, które pobiera i ustawia odcisk palca pierwszego certyfikatu SSL w osobistym sklepie komputera. Jeśli twój system ma wiele certyfikatów, powinieneś dodać -Filter
opcję do gci
polecenia, aby upewnić się, że odwołujesz się do poprawnego certyfikatu. Pozostawiłem swoją oryginalną odpowiedź nienaruszoną poniżej w celach informacyjnych.
# get a reference to the config instance
$tsgs = gwmi -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'"
# grab the thumbprint of the first SSL cert in the computer store
$thumb = (gci -path cert:/LocalMachine/My | select -first 1).Thumbprint
# set the new thumbprint value
swmi -path $tsgs.__path -argument @{SSLCertificateSHA1Hash="$thumb"}
Aby uzyskać wartość odcisku palca
- Otwórz okno dialogowe właściwości certyfikatu i wybierz kartę Szczegóły
- Przewiń w dół do pola Odcisk palca i skopiuj ciąg szesnastkowy rozdzielany spacjami do czegoś takiego jak Notatnik
- Usuń wszystkie spacje z ciągu. Będziesz także musiał uważać i usuwać nie-ascii, które czasami są kopiowane tuż przed pierwszym znakiem w ciągu. Nie jest to widoczne w Notatniku.
- Jest to wartość, którą musisz ustawić w WMI. Powinno to wyglądać mniej więcej tak: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .
Teraz, gdy masz już wartość odcisku palca, oto jeden wiersz, którego możesz użyć do ustawienia wartości za pomocą wmic:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"
Lub jeśli PowerShell jest twoją rzeczą, możesz użyć tego zamiast tego:
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}
Uwaga: certyfikat musi znajdować się w „osobistym” magazynie certyfikatów dla konta komputera.