Executar um script ao ingressar em um domínio

2

Eu tenho um domínio da Microsoft (principalmente 2008r2 \ 7).
Eu estou procurando uma maneira de executar um script imediatamente após (a reinicialização após) ingressar em um domínio (sem exigir login de usuário), e até agora eu falhei.

Além disso, quero que seja executado apenas uma vez, portanto, agendar uma tarefa repetida não é uma opção.
Parece-me um desperdício deixar isso acontecer de novo e de novo.

Eu tentei um GPO com script de inicialização, mas quando o computador recebe o GPO é bem depois da inicialização.
Eu também tentei um GPO com uma tarefa agendada (com diferentes gatilhos), mas eles não funcionaram também:
O gatilho "Na inicialização" falha como o script de inicialização.
"Na criação de tarefas" falhar, eu acho que porque não é criado da maneira usual.
"No horário" é irrelevante, porque eu preciso que ele seja executado logo após entrar (e definir uma data que já tenha passado não funcionou).
Não foi possível encontrar nenhuma chave de registro relevante, mas suponho que eles teriam o mesmo problema que o script de inicialização do GPO.

A única ideia que pode fazer o que eu preciso é anexar uma tarefa ao evento relevante nos DCs e executar o script remotamente.

Alguma sugestão melhor?

- Editar--
Pelas respostas (que são ótimas, mas não são suficientes), tenho alguns pontos a adicionar:
1. A questão se aplica a ambos os servidores (2008r2 \ 2012 \ 2012r2), embora eu tenha testado apenas em 2012r2.
2. Estou à procura de uma solução mais semelhante a runonce, o que significa que não quero que funcione indefinidamente até que alguma condição seja cumprida.
3. Usamos imagens para implantar servidores e estações de trabalho, mas não posso usar uma solução que envolva editá-las porque a) Isso exigiria que eu as atualizasse toda vez que eu precisasse alterar algo no meu script b) BYODs. 4. Nós não usamos um script de junção (nós simplesmente não precisamos de um ...), então começar a usar um parece-me um desperdício. Além disso, há alguns problemas com ele (por exemplo, onde devo colocá-lo? Na imagem? Em um local compartilhado? O que com BYODs? Que derrotaria o ponto 3).

Obrigado.

    
por EliadTech 19.05.2015 / 09:05

3 respostas

1

Adicione uma chave de registro personalizada à sua imagem de construção, apenas um simples valor '1' em algum lugar.
Adicione uma tarefa agendada que verifique o valor da chave de registro para a imagem de compilação, adicione verificações para o seu nome de domínio nessa chave do Registro

HKLM \ Sistema \ CurrentControlSet \ Services \ Tcpip \ Parameters

Se encontrar ambos, execute seu script e, em seguida, altere a chave de registro personalizada para 0 em completo. Execute esta tarefa na inicialização.

Você pode deixar essa tarefa como está ou ter um gpo que exclua a tarefa agendada. No entanto, se você deixá-lo no lugar e você precisar executar novamente o script, basta alterar a chave do registro de volta para 1 e reinicializar.

Um problema de segurança leve é que a tarefa agendada precisará ser executada como uma conta de administrador local.

    
por 20.05.2015 / 00:25
0

Você não precisa reiniciar depois de ingressar no domínio? Se você criou um script de inicialização, ele será aplicado logo após a reinicialização, quando carregar os outros objetos de política de grupo.

Como você está ingressando no domínio agora? Você também pode integrar a união do domínio ao seu script. Com o Powershell isso é feito com o Add-Computer, na linha de comando você pode usar o netdom.

Geralmente, você integraria isso à sua sequência de tarefas, se estiver usando uma ferramenta de gerenciamento de configuração.

    
por 19.05.2015 / 10:07
0

Como a união está sendo executada? Interação manual GUI ou via script? Se um script, adicione uma linha ao script de associação para que seu segundo script seja executado por meio da chave do Registro RunOnce.

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ RunOnce link

--- BEGIN EDIT ---
Doh! Direito de

Pensando no seu comentário sobre a aplicação do GPO sendo atrasado ... Eu trabalho principalmente no SO do servidor que faz o processamento do GPO síncrono. As estações de trabalho fazem assíncronas. Tente isto para obter async:

Em seu processo / imagem de criação, tente desativar a "Otimização de logon rápido" link
Configuração do Computador \ Modelos Administrativos \ Sistema \ Logon
Sempre espere pela rede na inicialização e logon do computador = Ativado

Criar um GPO de script de inicialização de GPO:
Configuração do Computador / Políticas / Configurações do Windows / Scripts / Inicialização

Dentro do script que você define lá, use este código:

$built = gwmi Win32_OperatingSystem | foreach {[System.Management.ManagementDateTimeconverter]::ToDateTime($_.InstallDate)}
if ($built -gt (get-date).addHours(-4)) {
    "do something"
}
    
por 19.05.2015 / 15:46