当我尝试自动将域组添加到本地管理员时,我在工作站安装脚本中遇到了以下问题。
我遇到的问题如下:
- 当我使用本地管理员时,我有权将用户添加到本地组,但需要提供域凭据才能连接到域
- 当我使用域用户时,我可以连接到 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
带有选项的 cmdlet–verb runas
来获取不同的安全上下文,但遇到了与上述相同的问题。
有什么办法吗
- 仅
([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
在域用户的安全上下文中解析并将其传递给在本地管理员的安全上下文中运行的其余脚本(这与 compmgmt.msc 的做法非常相似)
或者
- 从硬编码数据构建 [ADSI] 对象,无需连接到域
或者
- 还有一些显而易见的事情我还没有想到
答案1
您可以通过该文件将域组添加到本地组unattend.xml
,从而无需任何脚本。
通过系统映像管理器 (SIM) 编辑 Unattend.xml
打开 SIM 卡后unattend.xml
,在窗口的左下角找到 节点Microsoft-Windows-Shell-Setup
。(笔记:您应该使用与您的图像架构相对应的节点,即 64 位平台的 amd64。)展开 Shell-Setup 节点,然后UserAccounts
、DomainAccounts
和DomainAccountList
。右键单击该DomainAccount
节点,并选择将设置添加到 pass 7 (oobeSystem)。
在 SIM 窗口的中心,您需要配置新添加的节点。在DomainAccountList
节点的值中输入您的域的名称Domain
。
在DomainAccount
节点中,该Group
值应设置为要修改的本地组的名称,在本例中管理员。该Name
值应设置为要添加到本地组的域组的名称。
手动编辑 Unattend.xml (不建议)
您也可以unattend.xml
使用自己喜欢的文本编辑器手动编辑该文件。<settings>
找到oobe系统通过。您可以复制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>