Очередной пост про RDP. На этот раз про подключение определённого пользователя к удалённому рабочему столу на определённом хосте. В прилично настроенных политиках обычные пользователи лишены привилегий удалённых рабочих столов и этот функционал должен указываться явно. Само собой, если попытаться подключиться туда куда не надо тому кому не следует — вылезет всем известная ошибка:

Чтобы не множить группы в домене и уж тем более не давать право всем подряд «шастать» по всем доступным удалённым рабочим столам — предлагаю действовать адресно. К примеру, разрешить доступ к хосту только определённому пользователю, добавив юзера в локальную группу доступа на нужном компьютере.
Конечно, тащиться через удалённый рабочий стол самому и добавлять пользователя вручную не вежливо — можно потревожить текущую пользовательскую сессию. Лучше всё делать тихо и незаметно.
Для этих целей я использую вот такую функцию:
function AddRDPUser
{
Param(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
$ComputerName,
[Parameter(Mandatory=$true)]
[ValidateSet("Пользователи удаленного рабочего стола", "Remote Desktop Users")]
[ValidateNotNullOrEmpty()]
$GroupName,
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
$UserName
)
try
{
Set-Service -ComputerName $ComputerName -Name WinRM -Status Running -PassThru | Out-Null
Invoke-Command -ComputerName $ComputerName -ErrorAction Stop -ScriptBlock { Add-LocalGroupMember -Group $args[0] -Member $args[1] -ErrorAction Stop } -ArgumentList $GroupName, $UserName
return "Done!"
}
catch { return "Connection refused or something went wrong!" }
}
Вызвать функцию можно страндартно:
AddRDPUser -ComputerName TESTPC -UserName domain\user -GroupName 'Пользователи удаленного рабочего стола'
Если пользователь доменный — в параметре UserName применяем конструкцию domain\user, остальные параметры, думаю, вполне понятны. Кстати, в атрибут GroupName я добавил две подсказки: наименование целевой группы на русском и английском языках.
Из этой функции можно создать модуль и установить в систему для спокойной работы прямо из консоли. Подробнее об этом можно почитать здесь.