Encontrei o seguinte catch22 no script de instalação da minha estação de trabalho ao tentar adicionar automaticamente um grupo de domínio aos administradores locais.
O problema que estou enfrentando é o seguinte:
- Quando uso o administrador local, tenho direitos para adicionar usuários a um grupo local, mas preciso fornecer credenciais de domínio para conectar-me ao domínio
- Quando estou usando um usuário de domínio, posso me conectar ao AD, mas o usuário que faz isso ainda não é um administrador local, portanto ainda não posso modificar grupos locais.
Estou em um ambiente GMP, então as regras e regulamentos são! estrito que limita outros caminhos possíveis.
- As funções são divididas, portanto não tenho acesso ao administrador do domínio.
- Nenhuma alteração é permitida nas UOs que possam expulsar o grupo da Política de Grupo
- Não é permitido usar o PowerShell com scripts remotos
Isso é bastante fácil de contornar manualmente ao usar compmgmt.msc e fornecer as credenciais necessárias quando solicitado... mas gostaria de evitar adicionar etapas manuais e apenas automatizar toda a instalação tanto quanto possível.
Alguns detalhes:
- O sistema operacional da estação de trabalho é o Windows 10
- O script que estou usando é o PowerShell
- O script está sendo executado com uma conta de administrador local com privilégios elevados
- A estação de trabalho já está associada ao domínio
- A conta usada para associar a estação de trabalho ao domínio não é um administrador de domínio
- Para ter direitos de administrador na minha conta de domínio, preciso adicionar o grupo do nosso departamento ao grupo de administração local
O código que uso para adicionar um grupo ao grupo de administração local é
$de = [ADSI]"WinNT://$Env:ComputerName/Administrators,group" $de.psbase.Invoke("Add",([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path)
Este código funciona perfeitamente quando executado com uma conta de domínioeé um administrador local.
Como isso é usado para instalação de uma nova estação de trabalho, posso executá-lo como conta de domínioouadministrador local.
Com o primeiro a $de.psbase.Invoke("Add",
parte falha
Com o último a ([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
falha
Tentei usar start-process
o cmdlet com –verb runas
opções para obter um contexto de segurança diferente, mas encontrei o mesmo problema acima.
Existe alguma maneira que eu possa
- resolva apenas
([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
no contexto de segurança de um usuário de domínio e passe isso para o resto do meu script em execução no contexto de segurança do administrador local (é assim que compmgmt.msc faz isso)
ou
- construir o objeto [ADSI] a partir de dados codificados sem a necessidade de se conectar ao domínio
ou
- outra coisa incrivelmente óbvia em que não pensei
Responder1
Você pode adicionar um grupo de domínio a um grupo local por meio do unattend.xml
arquivo, eliminando a necessidade de qualquer script.
Editando Unattend.xml por meio do System Image Manager (SIM)
Depois de abrir o seu unattend.xml
SIM, no canto inferior esquerdo da janela, encontre o nó para Microsoft-Windows-Shell-Setup
.(Observação:Você deve usar o nó correspondente à arquitetura da sua imagem, ou seja, amd64 para plataformas de 64 bits.)Expanda o nó Shell-Setup e, em seguida UserAccounts
, DomainAccounts
, e DomainAccountList
. Clique com o botão direito no DomainAccount
nó e escolha adicionar a configuração para a passagem 7 (oobeSystem).
No centro da janela do SIM, você precisa configurar os nós recém-adicionados. No DomainAccountList
nó, insira o nome do seu domínio no Domain
valor.
No DomainAccount
nó, o Group
valor deve ser definido como o nome do grupo local que você deseja modificar, neste casoAdministradores. O Name
valor deve ser definido como o nome do grupo de domínio que você deseja adicionar ao grupo local.
Editando Unattend.xml manualmente (não recomendado)
Você também pode editar o unattend.xml
arquivo manualmente, em seu editor de texto favorito. Localize o <settings>
nó dooobeSystempassar. Você pode copiar o DomainAccounts
nó abaixo e colocá-lo unattend.xml
após o AdministratorPassword
nó. Certifique-se de modificar os nós Group
e Name
no DomainAccount
nó, juntamente com o nome de domínio especificado no Domain
nó.
<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>