Sincronizar o horário da Internet em um script do Windows?

11

Existe uma maneira de sincronizar o relógio do sistema com um servidor de horário da Internet (ex .: time.nist.gov) via linha de comando? De preferência, isso deve ser algo executável via script BAT ou PowerShell.

Essa necessidade específica surge porque eu tenho algumas VMs para as quais uso regularmente a função "salvar estado da máquina", e elas normalmente não ressincronizam seus relógios quando eu os "acordo". Muitas vezes, eu as recarrego novamente para descobrir que o relógio está (e está ficando) dias fora de sincronia.

Sincronizar novamente o relógio pela caixa de diálogo Configurações de horário da Internet geralmente funciona bem, mas são necessários muitos cliques do mouse para fazer isso. Prefiro apenas manter um script na área de trabalho no qual eu possa clicar duas vezes e fazer o trabalho para mim.

No momento, isso é para um sistema executando o Windows 7 Home x64, mas seria uma boa compatibilidade com o XP SP3.

Iszi
fonte
1
A maioria dos softwares de VM (Virtual PC, VirtualBox) vem com drivers ("Adições") que mantêm o relógio do hóspede sincronizado com o host, entre outras coisas.
user1686
@rawity - Usando esses, mas não parece fazer o trabalho.
Iszi

Respostas:

13

Consulte a referência do W32tm, "Uma ferramenta usada para diagnosticar problemas que ocorrem com o Windows Time": http://technet.microsoft.com/en-us/library/bb491016.aspx . Além disso,w32tm /?

Use w32tm /resync. Você também pode precisar configurar um servidor net timese ainda não o fez.

Jeff Ferland
fonte
2
Ok, eu fiz ... @echo off && w32tm /resync && PAUSEJoguei isso em um arquivo BAT e defina um atalho na área de trabalho com "Executar como administrador" marcado. Obrigado!
Iszi 15/08
No Windows 7, quando faço isso, recebo:The following error occurred: The service has not been started.
Usuário
@echo off && w32tm / resync - propmpt Comando diz que ele não reconhece comandos (w32tm)
Arpit Parekh
.. O comando que eu não pude executar no windows 7.
Arpit Parekh
1
@DeepakKamat, você provavelmente precisará usar o Windows Services (digite "services.msc" em uma caixa de execução ou pesquisa). Role para baixo para encontrar o horário do Windows. Clique com o botão direito do mouse e escolha Propriedades. Lá você pode definir o tipo de inicialização como automático.
Kirk Liemohn
1
@echo off
net start W32Time
w32tm /resync
echo sync complete
  1. Copie esse código no bloco de notas e salve-o como um .batarquivo.
  2. Execute o arquivo em lotes com privilégios de administrador ou agende uma tarefa para executar esse arquivo em lotes no Agendador de tarefas, conforme necessário.

Nota: Isso requer privilégios de administrador e uma conexão com a Internet em funcionamento.

Sainath Prabhu
fonte
0

Eu costumava fazer isso com o comando net.

para ntp

net time ntp.server.foo

para Windows

tempo líquido \\ servidor

Não me lembro se você precisava de algum tipo de sinalizador / ntp para o ntp ... ele informará se você precisar.

Kyle__
fonte