Script de inicialização do GPO não copiando arquivos

2

Eu criei um script de inicialização do GPO para executar computadores em um contêiner específico do AD. O script pega um arquivo do compartilhamento netlogon do AD e o coloca em um diretório no computador. Dadas as permissões corretas (ou seja: eu mesmo) posso executar o script muito bem e as cópias do arquivo. Mas não funciona na inicialização - o arquivo não é copiado do servidor AD.

O script de inicialização deve ser executado como sistema local (estou certo?). Então a questão é por que os arquivos não são copiados na inicialização? Poderia ser por causa de:

  • São permissões do usuário do sistema local?
  • A leitura do registro é problemática na inicialização?
  • Obter arquivos da pasta netlogon do AD é problemático na inicialização?
  • Eu estou sentindo falta dele completamente?

Minha máquina de teste possui a chave do registro e os diretórios locais, conforme descrito no script. Eu mesmo tenho permissões de usuário padrão na máquina de teste. O servidor do AD é o Windows 2008, o cliente de teste é o Windows XP SP3 (e, em breve, o Windows 7, que eu considero que os problemas de permissões serão inevitáveis)

Dim wShell, fso, oraHome, tnsHome, key, srcDir
Set wShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
key = "HKLM\Software\Oracle\Oracle_Home"
On Error Resume Next
orahome = wShell.RegRead(key)
If err.Number = 0 Then
tnsHome = oraHome + "\" + "network\admin\"
srcDir = wShell.ExpandEnvironmentStrings("%logonserver%") + "\netlogon\UpdatedFiles\"
fso.CopyFile srcDir + "file1.ext", tnsHome, true
End If

Observação: para garantir que o script seja implantado corretamente, propositalmente coloco alguns erros no script e, na próxima inicialização, a mensagem de erro é exibida. Então, sei que o GPO está implantado corretamente.

    
por marcwenger 29.10.2010 / 06:08

2 respostas

1

Com a conta do sistema local, o script será conectado à rede usando a conta do computador do AD (por exemplo, COMPUTERNAME $).

No entanto, a variável% logonserver% pode não ser válida no contexto da conta do sistema - depois que toda a conta do sistema local se autenticar com a máquina local, não com o domínio. A variável% logonserver% pode estar em branco ou igual ao nome da máquina local.

tente usar \domain.name\NETLOGON . Isso se conectará a um controlador de domínio (e como o compartilhamento NETLOGON contém os mesmos arquivos em todos os DCs porque usa o FRS, não importa com qual DC você está falando.

    
por 04.04.2012 / 12:32
2

Hmmm ... O que você está fazendo deve funcionar. Isso não é muito consolo, eu sei, mas eu uso um LOT de scripts de inicialização (milhares de invocações em clientes em todos os sites do meu cliente todos os dias) e não tenho problemas com confiabilidade de execução de scripts. / p>

Eu adicionaria um "On Error Goto 0" após o registro ser lido para que quaisquer outros erros na execução do script fossem relatados. Eu também consideraria, pelo menos para testes, adicionar algumas chamadas MsgBox para relatar os valores que você construiu para a chamada fso.CopyFile. Depure-o com instruções "PRINT", basicamente.

Não que seja útil, mas eis como faria isso com um arquivo em lotes:

@echo off
for /f "usebackq tokens=2*" %%i in ('reg query HKLM\Software\Oracle /v Oracle_Home ^| find /i "Oracle_Home"') do (
 if not "%%j"=="" copy /y "\%USERDOMAIN%\netlogon\UpdatedFiles\some_file.tns" "%%j"
)

Como um aparte: Você não deve ter problemas de permissões executando um script de inicialização no Windows 7. O script será executado como SYSTEM e o UAC não será ativado. A Microsoft acertou isso.

    
por 29.10.2010 / 07:19