Gå til innhold

Windows Server 2003 sync tidssone (løst)


OV-103

Anbefalte innlegg

Skrevet (endret)

Jeg har et system der jeg vil ha synkronisert klokka mot en server.

Systemet er ikke i et domene, serveren er ikke koblet mot internett og alle klientene kjører Windows XP Pro SP2.

Nå har jeg klart å få synkronisert klokka, men om noen av klientene har en annen dato enn serveren så stopper det opp.

 

Er det mulig å også få synkronisert dato og helst også tidssone uten ekstra programvare?

Endret av OV-103
Videoannonse
Annonse
Skrevet

Fant ut at ved å endre DWORD "MaxPosPhaseCorrection" og "MaxNegPhaseCorrection" i "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config" til "ffffffff" i registeret på klienten så synkroniserer den uansett hva datoen er.

 

Da var det bare igjen å finne ut om windows kan synkronisere tidssone uten å legge inn andre programmer. Jeg har mine tvil om at det går, men det er jo lov å håpe.

Skrevet

Fikk det til ved å lage et script som automatisk henter ut tidssone informasjon fra registeret på serveren og legger det inn via en .reg fil på alle maskinene i nettverket.

Skrevet

Da legger jeg det ved her, men siden det er laget for systemet vi bruker på jobben så er det noen småting som kanskje må tilpasses. Variabler for admin bruker og navn står øverst.

Merk at det sikkert kunne blitt gjort mye mer elegant, men jeg hadde ikke så mye tid til å gjøre det.

I tillegg til scriptet trengs et program som heter psexec.exe. Det kan hentes hos Microsoft. Psexec trenger ikke å installeres, bare legges i samme mappe som scriptet.

@echo off
title Time, date and time zone sync
color 17
cls

rem --Set variables
rem ==================================================================================== Set variables START

set EXECLOC=%~dp0
set DRV=%EXECLOC:~0,1%
set PTH=%EXECLOC:~3%
set USER=KNC_Service
set PASS=LUN6a6
set TSRV=0

rem ==================================================================================== Set variables END


rem --Check for psexec.exe
rem ==================================================================================== Check for psexec.exe START

psexec >nul 2>nul
if %errorlevel% == 9009 (
echo.
echo Error: Cannot find psexec.exe in current folder or in PATH. Exiting...
echo.
pause
exit 1
)

rem ==================================================================================== Check for psexec.exe END

rem --Generate stations.cfg
rem ==================================================================================== Generate stations.cfg START

if not exist "stations.cfg" (
SETLOCAL ENABLEDELAYEDEXPANSION
cls
echo No Stations.cfg found, generating new file...
net view | findstr /i \\. > stations.tmp
findstr /i /v !COMPUTERNAME! stations.tmp > stations.tmp2

for /F %%a in (stations.tmp2) do (
 set tmp= %%a
 set tmp=!tmp:~3,15!
 echo !tmp! >> stations.cfg
)

del /F /Q stations.tmp
del /F /Q stations.tmp2
echo.
echo stations.cfg created.
echo Please review the file with Notepad/Wordpad and then press enter to continue.
echo.
pause
)

rem ==================================================================================== Generate stations.cfg END

rem ==================================================================================== Time sync START


echo Do you want to enable time synchronization on all clients in stations.cfg?
echo.
echo.
set /p SYNC="yes/no: "
cls
echo.

if /i "%SYNC%" == "" set SYNC=no

if /i "%SYNC%" == "no" GOTO NOSYNC

echo Collecting systeminfo...
systeminfo | find "5.2.3790" >nul 2>nul

if %errorlevel% == 0 (

SETLOCAL ENABLEDELAYEDEXPANSION
ipconfig > ip.tmp
for /F "tokens=2 delims=:" %%a in ('find "IP Address" ^<ip.tmp') do set IP=%%a
set TSRV=!IP:~1,15!
del /Q ip.tmp
regedit /e tserver.reg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
find "Enabled" tserver.reg | find "=dword:00000001" >nul 2>nul

if !errorlevel! == 1 (

 cls
 echo.
 echo You are running Windows Server 2003 with Time Server disabled.
 echo Enable the this Time Server for all clients?
 echo.
 echo.
 set /p TS="yes/no: "
 cls
 echo.

 rem If Yes, activate Time Server in registry and restart service.

 if /i "!TS!" == "yes" (

  echo Windows Registry Editor Version 5.00 > tsrv.reg
  echo.>> tsrv.reg
  echo.>> tsrv.reg
  echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config] >> tsrv.reg
  echo "AnnounceFlags"=dword:00000005 >> tsrv.reg
  echo.>> tsrv.reg
  echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters] >> tsrv.reg
  echo "Type"="NoSync" >> tsrv.reg
  echo.>> tsrv.reg
  echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer] >> tsrv.reg
  echo "Enabled"=dword:00000001 >> tsrv.reg
  regedit /s tsrv.reg
  del /Q tsrv.reg
  echo Restarting service to activate changes...
  net stop w32time
  net start w32time
  cls
  GOTO AUTOIP
 )
)
GOTO AUTOIP
)

cls
echo.
set /p TSRV="Enter Time server IP: "

:AUTOIP
echo Windows Registry Editor Version 5.00 > time.reg
echo.>> time.reg
echo.>> time.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config] >> time.reg
echo "MaxNegPhaseCorrection"=dword:ffffffff >> time.reg
echo "MaxPosPhaseCorrection"=dword:ffffffff >> time.reg
echo.>> time.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters] >> time.reg
echo "NtpServer"="%TSRV%,0x1" >> time.reg
echo "Type"="NTP" >> time.reg
echo.>> time.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\Parameters] >> time.reg
echo "NtpServer"="%TSRV%,0x1" >> time.reg
echo "Type"="NTP" >> time.reg
echo.>> time.reg

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient] >> time.reg
echo "Enabled"=dword:00000001 >> time.reg
echo "InputProvider"=dword:00000001 >> time.reg
echo.>> time.reg

echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DateTime\Servers] >> time.reg
echo @="0" >> time.reg
echo "0"="%TSRV%" >> time.reg
echo "1"=- >> time.reg
echo "2"=- >> time.reg




:NOSYNC
rem ==================================================================================== Time sync END


rem ==================================================================================== Extract TZ information START

echo Collecting source Time Zone information...
echo.
regedit /e ccs.reg HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
regedit /e cs1.reg HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\TimeZoneInformation
cls

rem ==================================================================================== Extract TZ information END

rem ==================================================================================== Import reg file START

echo Exporting registry settings to clients...
cls

for /F %%b in (stations.cfg) do ( 
echo Copying and importing reg files to station %%b
xcopy /E /Y ccs.reg \\%%b\C$\ >nul 2>nul
xcopy /E /Y cs1.reg \\%%b\C$\ >nul 2>nul
if exist time.reg xcopy /E /Y time.reg \\%%b\C$\ >nul 2>nul
psexec.exe -i \\%%b -u %USER% -p %PASS% regedit /s C:\ccs.reg >nul 2>nul
psexec.exe -i \\%%b -u %USER% -p %PASS% regedit /s C:\cs1.reg >nul 2>nul
if exist time.reg psexec.exe -i \\%%b -u %USER% -p %PASS% regedit /s C:\time.reg >nul 2>nul
del /Q \\%%b\C$\ccs.reg \\%%b\C$\cs1.reg
if exist time.reg del /Q \\%%b\C$\time.reg
psexec.exe -i \\%%b -u %USER% -p %PASS% -d shutdown /r /t 5 /c "Shutting down to set Time Zone" >nul 2>nul
)


rem ==================================================================================== Import reg file END

del /Q ccs.reg cs1.reg
if exist time.reg del /Q time.reg
if exist tserver.reg del /Q tserver.reg
exit 0


rem --Written by Espen Urkedal
rem =============
rem = v.1.0 RC1 =
rem =============

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...