
Я столкнулся со следующим catch22 в скрипте установки моей рабочей станции, пытаясь автоматически добавить группу домена в локальные администраторы.
Уловка, с которой я сталкиваюсь, заключается в следующем:
- Когда я использую локального администратора, у меня есть права добавлять пользователей в локальную группу, но для подключения к домену мне нужно предоставить учетные данные домена.
- Когда я использую пользователя домена, я могу подключиться к AD, но пользователь, выполняющий это действие, еще не является локальным администратором, поэтому я пока не могу изменять локальные группы.
Я работаю в среде GMP, поэтому правила и положения !действительно! строгие, что ограничивает другие возможные пути.
- Роли разделены, поэтому у меня нет доступа к администратору домена.
- Не допускается внесение изменений в OU, которые могут вывести группу из групповой политики.
- Использование PowerShell с удаленными скриптами запрещено.
Это довольно легко обойти вручную, используя compmgmt.msc и предоставляя необходимые учетные данные по запросу... но я бы хотел избежать добавления ручных шагов и просто автоматизировать всю установку, насколько это возможно.
Несколько подробностей:
- Операционная система рабочей станции — Windows 10.
- Я использую скрипт PowerShell.
- Скрипт запущен с учетной записью локального администратора с повышенными привилегиями.
- Рабочая станция уже присоединена к домену
- Учетная запись, используемая для присоединения рабочей станции к домену, не является учетной записью администратора домена.
- Чтобы иметь права администратора в моей учетной записи домена, мне нужно добавить группу нашего отдела в локальную группу администраторов.
Код, который я использую для добавления группы в локальную группу администраторов, выглядит
$de = [ADSI]"WinNT://$Env:ComputerName/Administrators,group" $de.psbase.Invoke("Add",([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path)
следующим образом: Этот код отлично работает при запуске с учетной записью домена.иявляется локальным администратором.
Поскольку это используется для установки совершенно новой рабочей станции, я могу запустить это как учетную запись доменаилилокальный администратор.
С первым $de.psbase.Invoke("Add",
часть не работает
С последним часть ([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
не работает
Я попробовал использовать start-process
командлет с –verb runas
параметрами, чтобы получить другой контекст безопасности, но столкнулся с той же проблемой, что и выше.
Есть ли способ, которым я могу
- разрешать только
([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
в контексте безопасности пользователя домена и передавать это остальной части моего скрипта, работающего в контексте безопасности локального администратора (именно так это делает compmgmt.msc)
или
- построить объект [ADSI] из жестко закодированных данных без необходимости подключения к домену
или
- что-то еще ослепительно очевидное, о чем я не подумал
решение1
Вы можете добавить группу домена в локальную группу через файл unattend.xml
, что устраняет необходимость в написании каких-либо скриптов.
Редактирование Unattend.xml через System Image Manager (SIM)
После открытия unattend.xml
SIM-карты в левом нижнем углу окна найдите узел Microsoft-Windows-Shell-Setup
.(Примечание:Вам следует использовать узел, соответствующий архитектуре вашего образа, т. е. amd64 для 64-битных платформ.)Разверните узел Shell-Setup, затем UserAccounts
, DomainAccounts
, и DomainAccountList
. Щелкните правой кнопкой мыши DomainAccount
узел и выберите добавление настройки для прохода 7 (oobeSystem).
В центре окна SIM вам необходимо настроить вновь добавленные узлы. В DomainAccountList
узле введите в значение имя вашего домена Domain
.
В DomainAccount
узле Group
значение должно быть установлено на имя локальной группы, которую вы хотите изменить, в данном случаеАдминистраторы. Name
Значение должно быть установлено на имя доменной группы, которую вы хотите добавить в локальную группу.
Редактирование Unattend.xml вручную (не рекомендуется)
Вы также можете редактировать unattend.xml
файл вручную в вашем любимом текстовом редакторе. Найдите <settings>
узел дляoobeSystempass. Вы можете скопировать DomainAccounts
узел ниже и поместить его в свой unattend.xml
после AdministratorPassword
узла. Обязательно измените узлы Group
и Name
в DomainAccount
узле, а также доменное имя, указанное в Domain
узле.
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" ... >
<UserAccounts>
<AdministratorPassword>
<Value>mylocaladminpassword</Value>
<PlainText>true</PlainText>
</AdministratorPassword>
<DomainAccounts>
<DomainAccountList wcm:action="add">
<DomainAccount wcm:action="add">
<Group>Administrators</Group>
<Name>Name-Of-Domain-Group-To-Add</Name>
</DomainAccount>
<Domain>DOMAIN_NAME_HERE</Domain>
</DomainAccountList>
</DomainAccounts>