Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как менять поля на вкладке "Среда" в Active Directory? (http://forum.oszone.net/showthread.php?t=340376)

Charg 03-05-2019 10:17 2870112

Как менять поля на вкладке "Среда" в Active Directory?
 
Интересуют это поле, если быть точным:
Скрытый текст


Нашел такой код:
Код:

$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() ругается на недостачу прав):
Скрытый текст


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


------

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

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

Kazun 03-05-2019 23:53 2870309

На 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 2870335

Kazun, спасибо, попробую в понедельник на работе.
RSAT то установлен конечно же, так что по идее библиотека должна быть. Может она просто автоматически не регистрируется...

Charg 06-05-2019 17:11 2870640

Проверил, заработало, спасибо ещё раз.

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

Код:

    #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
        }
    }



Время: 23:20.

Время: 23:20.
© OSzone.net 2001-