Войти

Показать полную графическую версию : [решено] Как менять поля на вкладке "Среда" в Active Directory?


Charg
03-05-2019, 10:17
Интересуют это поле, если быть точным:https://i.imgur.com/PyHczBh.png

Нашел такой код:
$dn = (Get-ADUser -Identity "tsduser.a").DistinguishedName
$ext = [ADSI]"LDAP://$dn"
$ext.PSBase.InvokeSet("TerminalServicesInitialProgram","C:\program.exe")
$ext.SetInfo()
Который прекрасно отрабатывает если залогиниться под доменным админом на контроллер домена (Win Server 2016) и выполнить код оттуда с запуском powershell от админа (иначе метод SetInfo() ругается на недостачу прав):
https://i.imgur.com/wdhAp6t.png

Но это ведь глупо, хотелось бы дописать этот код в скрипт по созданию пользователей - и вот тут то код нифига не работает - под той же учетной записью с теми же правами (администратор домена, администратор схемы) с компьютера под Win10 LTSB 1607 с установленным RSAT (и соответственно всеми соответствующими powershell-модулями):
https://i.imgur.com/SbDIIsF.png

------

Версия павершелл и там и там идентичная (https://i.imgur.com/Xbg8mfv.png)
Все модули загруженные на стороне контроллера домена (Get-Module) подгружены и на Win10, тех же версий.
Учетная запись та же - права по идее должны быть идентичные.

Соответственно вопрос - как победить эту ошибку? Я уже не знаю куда копать.
Либо альтернативный вопрос - каким-нибудь другим способом эти аттрибуты меняются? Их нет в выводе Get-ADUser -Identity "tsduser.a" -Properties * в прямом виде, видимо оно как-то закодировано (https://i.imgur.com/sLslRIp.png) или хрен знает что это такое.

Kazun
03-05-2019, 23:53
На Windows 10 должна быть библиотека Tsuserex.dll(устанавливается RSAT - Remote Desktop Services Tools):

Скопировать с Windows Server 2016 на Windows 10(для Ru - версии может отличаться ru-RU):
C:\Windows\System32\tsuserex.dll
C:\Windows\System32\en-US\tsuserex.dll.mui

Зарегистрировать в системе:
regsvr32 c:\Windows\System32\tsuserex.dll

Charg
04-05-2019, 10:57
Kazun, спасибо, попробую в понедельник на работе.
RSAT то установлен конечно же, так что по идее библиотека должна быть. Может она просто автоматически не регистрируется...

Charg
06-05-2019, 17:11
Проверил, заработало, спасибо ещё раз.

Пока что наваял так:

#Check if DLLs exist and register if not
if (!(Test-Path "$($env:windir)\System32\tsuserex.dll")) {
try {
[string]$DCshare = (Get-ADDomainController).hostname | Join-Path -ChildPath "admin$\System32"
Copy-Item -Path "\\$($DCshare)\tsuserex.dll" -Destination "$($env:windir)\System32\tsuserex.dll" -Force
Copy-Item -Path "\\$($DCshare)\en-US\tsuserex.dll.mui" -Destination "$($env:windir)\System32\en-US\tsuserex.dll.mui" -Force
Copy-Item -Path "\\$($DCshare)\ru-RU\tsuserex.dll.mui" -Destination "$($env:windir)\System32\ru-RU\tsuserex.dll.mui" -Force
regsvr32 /s "$($env:windir)\System32\tsuserex.dll"
}
catch [UnauthorizedAccessException] {
[System.Windows.MessageBox]::Show("Требуется однократный запуск от имени администратора домена для копирования и регистрации библиотеки \\$($DCshare)\tsuserex.dll")
return
}
}




© OSzone.net 2001-2012