Виявляється, велика частина даних конфігурації для RDSH зберігається в Win32_TSGeneralSetting
класі в WMI в root\cimv2\TerminalServices
просторі імен. На налаштований сертифікат для даного з'єднання посилається значення Thumbprint цього сертифіката у властивості, що називається SSLCertificateSHA1Hash
.
ОНОВЛЕННЯ: Ось узагальнене рішення Powershell, яке захоплює і задає відбиток першого сердечного сердечка SSL в особистому магазині комп'ютера. Якщо у вашій системі є кілька сертів, вам слід додати -Filter
параметр до gci
команди, щоб переконатися, що ви посилаєтеся на правильний cert. Я залишив свою первинну відповідь недоторканою нижче цієї для довідки.
# 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"}
Для того, щоб отримати значення відбитків пальців
- Відкрийте діалогове вікно властивостей сертифіката та виберіть вкладку "Деталі"
- Прокрутіть униз до поля Thumbprint і скопіюйте шістнадцяткову рядок з обмеженим пробілом у щось на зразок Блокнот
- Видаліть усі рядки з рядка. Ви також хочете поспостерігати за та видалити символ, який не є ascii, який іноді копіюється безпосередньо перед першим символом у рядку. Це не видно в Блокноті.
- Це значення, яке потрібно встановити в WMI. Це має виглядати приблизно так: 1ea1fd5b25b8c327be2c4e4852263efdb4d16af4 .
Тепер, коли у вас є значення thumbprint, ось один вкладиш, який ви можете використовувати для встановлення значення за допомогою wmic:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="THUMBPRINT"
Або якщо PowerShell - це ваша річ, ви можете використовувати це замість цього:
$path = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").__path
Set-WmiInstance -Path $path -argument @{SSLCertificateSHA1Hash="THUMBPRINT"}
Примітка: сертифікат повинен бути в магазині сертифікатів "Особистий" для облікового запису "Комп'ютер".