Ошибка 0x80070005 при подключении к терминальному серверу

Иногда на терминальном сервере возникают неожиданные проблемы, например как эта:
пользователь подключается к нему и видит вместо рабочего стола темный экран или не запускается опубликованное RDWeb приложение. Бывает и такое, что у части пользователей все ОК при этом.

Смотрим логи сервера и видим такую ошибку:

В первую очередь надо убедиться, что сервер лицензирования не установлен на контроллере домена. Далее, надо проверить а работает ли вообще он, для этого заходим в его консоль и проверяем каким пользователям он выдал лицензии. Если происходит так, что какой-то половине он их выдает, а какой-то нет, то тогда вам необходимо запустить скрипт, который решает проблему с пользователями, которые были созданы давно, до обновления схемы Active Directory. Если вы не уверены, что скрипт точно вам поможет, то создайте в AD новую учетную запись и попытайтесь войти ей на терминальный сервер. Если эту произошло без ошибки, то значит этот скрипт то, что вам нужно.

Сохраните его с раcширением .ps1 и запустите на RDS-сервере или контроллере домена, изменив только в нем имя домена в первой строке.

$URL = "LDAP://DC=test,DC=local";

cls
$root = New-Object DirectoryServices.DirectoryEntry $URL
$ds = New-Object DirectoryServices.DirectorySearcher
$ds.SearchRoot = $root
$ds.filter = "objectCategory=Person"
$src = $ds.findall()
write-host "Found" $src.count "user objects.`n"
$src | %{
$de = $_.getdirectoryentry()
$accessrules = $de.get_objectsecurity().getaccessrules($true, $false,[System.Security.Principal.SecurityIdentifier]) | ?{$_.ObjectType -eq "5805bc62-bdc9-4428-a5e2-856a0f4c185e"}
if ((measure-object -inputobject $accessrules).count -eq 0)
{
$ar = new-object System.DirectoryServices.ActiveDirectoryAccessRule([System.Security.Principal.SecurityIdentifier]"S-1-5-32-561", 48, "Allow", [guid]"5805bc62-bdc9-4428-a5e2-856a0f4c185e")
$de.get_objectsecurity().addaccessrule($ar)
$de.commitchanges()
write-host -f yellow ("Added:`t" + $de.properties["sAMAccountName"])
start-sleep -m 200
}
else
{
write-host -f green ("OK:`t" + $de.properties["sAMAccountName"])
}
}
После этого сделайте Log Off и Log On на компьютере.

Добавить комментарий

Войти с помощью: