2017-06-30 15 views
0

Windows Server 2012 R2を実行しています。サーバーがアップデートをインストールして再起動すると(毎日午前4時に)、不正なタイムゾーンで再起動します。私たちの時間サイズはEST -5(現在は夏時間の-4)であり、サーバーのデフォルトはUTC -0です。これは私たちのタイムゾーンより4時間早いです。更新/再起動後のWindowsサーバーの時刻が正しくない

最初にこの問題を発見したとき、実際には唯一の回避策は、サーバーを再起動したときにタスクスケジューラを使用してsyncコマンドを実行することでした。そのタスクとコマンドは、2週間前、2014年6月15日頃までうまくいきました。それ以来、うまくいきませんでした。私はタスク/イベントログを見直しましたが、正常に実行されたと主張していますが、それはまだありません。

私の唯一の考えは、Windowsのアップデートでは、同期コードが役に立たないものがあったということです。しかし、私はそれができることを失っています。誰かが問題の特定方法に関する提案をしていますか?

使用している同期コードは.batファイルです。

2017-06 Windows Server 2012 R2 for x64ベースシステムのセキュリティロールアップ(月額6,000円) (KB4022726)は

は のWindows 8、8.1、10およびWindows Server 2012、2012 R2、2016のx64 Edition用

Windows悪意のあるソフトウェアの削除ツール - 2017年6月(KB890830)は

REM *** Retry for up to 15 minutes (90 retries @ 10 seconds each) 
set retryCount=0 

:SyncStart 
if %retryCount == 90 goto SyncEnd 
set /A retryCount=retryCount + 1 

REM *** Resync the system clock 
net start w32time 
w32tm /resync 
if errorlevel 1 goto SyncDelay 
if errorlevel 0 goto SyncEnd 

:SyncDelay 
REM *** If unsuccessful, delay 10 seconds, then retry 
choice /n /t:y,10>nul 
goto SyncStart 

:SyncEnd 
+0

アプリケーションまたはセキュリティ更新プログラムをインストールしても、タイムゾーンは確実に変更されません。ただし、タイムゾーン設定はアカウント関連です。したがって、あなたのアカウント用に設定されたのは、タイムゾーンESTですが、システムアカウントのUTCタイムゾーンです。管理者権限で、地域(国、日付/時刻/通貨形式など)、言語(キーボード、音声認識など)、現在の時間設定(タイムゾーン、夏時間調整など)をコピーすることができますユーザーをデフォルトのユーザーアカウント(新しいアカウントの場合)とシステムアカウントに変更します。この可能性を利用する必要があります。 – Mofi

答えて

1

バッチファイルには、構文エラーが含まれていますインライン:

if %retryCount == 90 goto SyncEnd 

環境変数の値は、標準的な膨張等だけでなく%VariableNameを使用して%VariableName%で参照しなければならないループ変数(CMDそれぞれ%%Iバッチファイル内に%I)またはバッチファイル引数(%0%1 FOR 、...)、または!VariableName!(ここでは不要な遅延拡張を使用してください)。

コードも最適化することができます

@echo off 
REM *** Retry for up to 15 minutes (90 retries @ 10 seconds each) 
set retryCount=0 

:SyncStart 
if %retryCount% == 90 goto :EOF 
set /A retryCount+=1 

REM *** Resync the system clock 
%SystemRoot%\System32\net.exe start w32time 
%SystemRoot%\System32\w32tm.exe /resync 
if not errorlevel 1 goto :EOF 

REM *** If unsuccessful, delay 10 seconds, then retry 
%SystemRoot%\System32\timeout.exe 10 /nobreak 
goto SyncStart 

まあ、コードをさらに最適化することができます。

@echo off 
REM *** Retry for up to 15 minutes (90 retries @ 10 seconds each) 
set retryCount=0 
%SystemRoot%\System32\net.exe start w32time 
%SystemRoot%\System32\timeout.exe 5 /nobreak 

:SyncTime 
%SystemRoot%\System32\w32tm.exe /resync 
if not errorlevel 1 goto :EOF 

REM *** If unsuccessful, delay 10 seconds, then retry 
set /A retryCount+=1 
if not %retryCount% == 90 %SystemRoot%\System32\timeout.exe 10 /nobreak & goto SyncTime 

使用されるコマンドとその仕組みを理解するために、コマンドプロンプトウィンドウを開きますそこで次のコマンドを実行し、各コマンドに表示されるすべてのヘルプページを非常に注意深く読んでください。

  • echo /?
  • goto /?
  • if /?
  • net /?
  • net start /?
  • rem /?
  • set /?
  • timeout /?
  • w32tm /?

そして、Microsoftのサポート記事Testing for a Specific Error Level in Batch Filesをお読みください。

+0

ステラの答え。ありがとうございました。私はコマンドを書いていないことを指摘しなければならない、それは私のリーグから出る方法だ。私はちょうど6/14まで8 +月間働いて以来、何か "壊した"と仮定しました。サーバーがアップデートをインストールした直後に動作が停止したので、私はそれらが関連していると仮定しました。 – user3010456

+0

あなたのソリューションは機能していましたが、現在は停止しています。同期タスクが完了したことを示すログの画像を追加しましたが、時間は正しく更新されていません。何が原因で動作が停止した可能性がありますか? [リンク](https://s.nimbus.everhelper.me/share/1312613/c6db4lh153m93m666xtg) – user3010456

+0

バッチファイルは管理者として昇格した権限で実行する必要があります。バッチファイルは、Windows Time Managementにメッセージを送信して、設定された時間ソースとの再同期を強制します。設定されたタイムソースは通常マイクロソフトのNTPサーバーであり、時間同期はWindowsの組み込みNTPクライアントで行われます。したがって、設定されたNTPサーバが動作しているかどうかを確認し、NTPクライアントからの要求を再同期化することを拒否しないでください。 Windowsレジストリの 'HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W32Time'を見て、このレジストリキーについて読んでください。 – Mofi

関連する問題