Disparo de tarefa agendada para quando o GPO não pode ser executado no início (sem DC)?

1

Eu estou empurrando um script de inicialização via GPO. O script atualiza um script local (no caso de alterações ou exclusão) e, em seguida, executa a si mesmo.

Eu gostaria que o script local fosse executado apenas na inicialização se a máquina estivesse off-line e não pudesse receber o script atualizado. Existe um item de log de eventos para não conseguir acessar o DC-para-aplicar-GPO-on-boot com o qual posso disparar? Não quero que o script seja executado toda vez que o controlador de domínio não estiver disponível (por exemplo, interrupção de rede temporária), somente na inicialização quando o controlador de domínio não estiver disponível.

Existe uma maneira melhor de fazer isso?

    
por Teknowledgist 11.12.2017 / 22:40

1 resposta

0

Uma maneira bastante direta seria sempre executar um script do PowerShell na inicialização que, em seguida, verifica se o domínio está disponível:

Try {
    [System.DirectoryServices.ActiveDirectory.Domain]::GetComputerDomain() | Out-Null
} Catch {
    # Code here
}

Se nenhum controlador de domínio puder ser contatado, o GetComputerDomain lança uma exceção e a execução cai no bloco catch. Se o domínio estiver disponível, a função é bem-sucedida e o script termina.

É claro que o código em um script do PowerShell precisa ser o PowerShell, mas você pode executar o lote clássico despejando um script em um arquivo temporário, executando o processador em lote e, em seguida, excluindo esse arquivo:

Try {
    [System.DirectoryServices.ActiveDirectory.Domain]::GetComputerDomain() | Out-Null
} Catch {
    $tmpBat = [System.IO.Path]::GetTempFileName() + '.bat'
    @"
rem                              PUT YOUR BATCH CODE HERE
"@ | Out-File $tmpBat -Encoding ASCII
    cmd /c $tmpBat
    Remove-Item $tmpBat
}

A falta de espaços em branco antes do código do lote é intencional; é necessário para o literal de cadeia multilinha (a coisa delineada por @" e "@ ), que evita que você precise lidar com o escape do PowerShell.

    
por 11.12.2017 / 23:07