ฉันจะตรวจสอบการกำหนดค่า NTP ปัจจุบันของระบบได้อย่างไร


65

ฉันต้องตรวจสอบการกำหนดค่า NTP ปัจจุบันในระบบ Windows บางระบบ เป็นการดีที่ฉันต้องการจะทำเช่นนี้ผ่านทางบรรทัดคำสั่งแทนการนำทางผ่านหน้าจอการตั้งค่า

(ฉันกำลังทำงานกับเวอร์ชั่นต่าง ๆ ของ OS และหน้าจอการตั้งค่ามีแนวโน้มที่จะไม่อยู่ในที่เดียวกันตลอดทั้งเวอร์ชัน)

ฉันหวังว่าจะพบคำสั่งที่รวดเร็วและน่าจดจำที่ฉันสามารถเจาะเข้าสู่คอนโซล CMD เพื่อรับผลลัพธ์ ไฟล์แบทช์ที่ฉันสามารถพกติดตัวไปด้วยจะทำได้เช่นกัน

โดยเฉพาะฉันต้องการสิ่งต่อไปนี้:

  • แสดงให้เห็นว่าระบบได้รับการกำหนดค่าให้รับเวลาจากเซิร์ฟเวอร์ NTP หรือไม่
  • แสดงเซิร์ฟเวอร์ NTP ที่ระบบได้รับเวลา
  • แสดงเวลาของการซิงโครไนซ์ครั้งล่าสุด
  • แสดงเวลาปัจจุบันบนระบบ

จำเป็นต้องมีคำสั่งอะไรเพื่อให้ได้ผลลัพธ์เหล่านี้

ค้นหาโซลูชันที่ทำงานร่วมกันได้กับ Windows XP, 7, Server 2003 และ Server 2008


ฉันรู้ที่จะตรวจสอบเวลาที่คุณสามารถทำได้ "net time \\ computername" เพื่อรับเวลาของพีซีระยะไกล ฉันไม่คิดว่าเวลาสุทธิจะให้คุณดูการซิงค์ครั้งล่าสุดแม้ว่า ... แต่ "เวลาสุทธิหรือไม่" ให้ตัวเลือกการตั้งค่าดังนั้นจึงเป็นเหมือน 1/2 ของสิ่งที่คุณมองหา
Supercereal

@ ไคล์ฉันเพิ่งคิดออกว่าnet time /querysntpจะแสดงเซิร์ฟเวอร์ การได้รับส่วนที่เหลืออาจจะยุ่งยาก
Iszi

3
ใน Windows 7 net time / querysntp เลิกใช้แล้ว
แดเนียล

คำตอบ:


82

ในบรรทัดคำสั่งพิมพ์

w32tm /query /configuration
w32tm /query /status
Time /T 

w32tm /query /configuration ให้การกำหนดค่าที่คุณได้ตั้งค่าไว้

w32tm /query /status ให้ข้อมูลเช่น:

  • ชั้น
  • ตัวบ่งชี้การกระโดด
  • ความแม่นยำ
  • ซิงค์ครั้งสุดท้าย
  • เซิร์ฟเวอร์ NTP
  • ช่วงโพล

time /T ส่งออกเวลาของระบบปัจจุบัน

หมายเหตุ: w32tm /queryเปิดตัวครั้งแรกใน Windows Vista ไคลเอ็นต์ไคลเอ็นต์และ Windows Server 2008 เวอร์ชันไคลเอนต์โปรดดูเครื่องมือและการตั้งค่า Windows Time Service


5
ไม่ดีสำหรับ XP "ไม่รู้จักคำสั่ง / แบบสอบถาม"
Iszi

ความแตกต่างระหว่างtime /tและเวลาที่แสดงที่ด้านล่างขวาของทาสก์บาร์คืออะไร
Pacerier

สำหรับครั้งแรกที่w32tm /query /configurationฉันได้รับ"ข้อผิดพลาดต่อไปนี้เกิดขึ้น:. การเข้าถึงถูกปฏิเสธ (0x80070005)" ฉันคิดว่าฉันมีสิทธิ์เพียงพอ
Peter Mortensen

3
คุณต้องอยู่ในหน้าต่างคำสั่งยกระดับสำหรับหน้าต่างนั้น
ฟิลลิปอาร์

16

คำตอบนี้เป็นคำถามสุดท้ายของคุณ:

เปิดพรอมต์คำสั่งและพิมพ์อย่างถูกต้อง:

w32tm /stripchart /computer:NTPServerNameOrIP /dataonly /samples:x (คุณต้องการผลตอบแทนเท่าใด)

ส่งคืนเวลาและส่วนต่างของเวลาเซิร์ฟเวอร์ NTP ถ้ามันคืนค่าเวลาข้อผิดพลาด: 0x80072746 นั่นไม่ใช่เซิร์ฟเวอร์ NTP ของคุณ

ตัวอย่างของคำสั่งอยู่ด้านล่าง:

ตัวอย่างคำสั่ง


คุณช่วยจัดรูปแบบคำตอบนี้ได้ไหม
Ramhound

รูปแบบตัวเองมันแปลก ได้แก้ไข
Byron

8

ฉันเหนื่อย:

w32tm /query /status

ฉันได้:

The command /query is unknown.

ในเครื่องอื่นฉันได้:

The following error occurred: The service has not been started. (0x80070426)

จากนั้นฉันก็ลอง:

reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time

ฉันได้:

ERROR: The system was unable to find the specified registry key or value.

จากนั้นฉันก็ลอง:

net time /querysntp

ฉันได้:

This computer is not currently configured to use a specific SNTP server.

ในอีกเครื่องฉันได้รับหน้าความช่วยเหลือโดยบอกว่า:

The /QUERYSNTP and /SETSNTP options have been deprecated. Please use w32tm.exe to configure the Windows Time Service.

ดังนั้นโดยทั่วไปบริการไม่ทำงาน ทำตามคำแนะนำเหล่านี้ฉันได้:

w32tm /unregister
w32tm /unregister
w32tm /register
net start w32time

ในที่สุดทั้งหมดข้างต้นจะทำงาน (หมายเหตุ: หากnet startล้มเหลวให้ดูด้านล่าง) จากนั้นฉันแค่ต้องตั้งค่า ntp ของฉัน ... ฉันทำมันด้วย:

w32tm /config /manualpeerlist:10.0.0.5 /syncfromflags:manual /reliable:yes /update

ทำตามคำแนะนำจากที่นี่แต่อาจเป็นเรื่องง่ายเหมือน:

net time /setsntp:10.0.0.5

ตามคำสั่งที่นี่ (10.0.0.5 เป็นเซิร์ฟเวอร์ NTP ในพื้นที่ของฉัน) หากคุณไม่ได้ใช้เซิร์ฟเวอร์ NTP ในพื้นที่คุณสามารถใช้เซิร์ฟเวอร์ทั่วไปได้:

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /reliable:yes /update

สุดท้ายคุณอาจต้องทำสิ่งต่อไปนี้ซึ่งไม่จำเป็นสำหรับฉัน:

w32tm /config /update
w32tm /resync /rediscover

หมายเหตุ: หากnet start w32timeล้มเหลวด้วยข้อผิดพลาด 1290 (การเริ่มบริการล้มเหลวเนื่องจากบริการหนึ่งรายการขึ้นไปในกระบวนการเดียวกันมีการตั้งค่าประเภทบริการ SID ที่เข้ากันไม่ได้) จากนั้นทำตามขั้นตอนที่นี่ :

w32tm /unregister
w32tm /register
sc config w32time type= own
net start w32time

จากนั้นปฏิบัติตามดังกล่าวข้างต้น


หมายเหตุ 2: หากบริการ NTP ไม่เริ่มต้นใหม่โดยอัตโนมัติอาจเกิดจากการตั้งค่าเริ่มต้นตามที่อธิบายไว้ที่นี่ : ขึ้นอยู่กับหน้าต่างของคุณบริการนั้นอาจถูกตั้งค่าให้เริ่มทำงานเมื่อเข้าร่วมโดเมนเท่านั้น คุณสามารถตรวจสอบกับ:

sc qtriggerinfo w32time

หากมีการกำหนดค่าให้เริ่มต้นเมื่อคุณเข้าร่วมโดเมนและคุณไม่มีการตั้งค่าโดเมนในเครื่องของคุณมันจะไม่เริ่มบริการและตั้งเวลา มันอาจไม่เข้าร่วมโดเมนเพราะคุณไม่ต้องการ ไม่ว่าในกรณีใดเพียงแค่เปลี่ยนสิ่งที่ทริกเกอร์เริ่ม ตัวอย่างเช่นหากต้องการเริ่มต้นเมื่อเครื่องมีเครือข่าย (และสามารถเข้าถึงเซิร์ฟเวอร์ได้) ให้ทำ:

sc triggerinfo w32time start/networkon stop/networkoff

4

ใช้:

net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"0.it.pool.ntp.org 1.it.pool.ntp.org 2.it.pool.ntp.org 3.it.pool.ntp.org"
net start w32time
w32tm /config /update
w32tm /resync /rediscover

ตัวอย่างไฟล์ค้างคาวที่https://gist.github.com/thedom85/dbeb58627adfb3d5c3af

ฉันยังแนะนำโปรแกรมนี้: http://www.timesynctool.com/


3

จากบรรทัดคำสั่งคุณจะได้รับข้อมูลเช่นนี้:

reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config

ดูเหมือนว่าอย่างน้อยน่าจะเพียงพอที่จะไปในทิศทางนั้นนั่นคือถ้าฉันเข้าใจคำถามของคุณ AFAIK คำสั่ง 'reg' ทำงานบนแพลตฟอร์มต่าง ๆ เหล่านี้ตราบใดที่คุณมีบริการที่เหมาะสมทำงานอยู่


ฉันได้รับ: "ข้อผิดพลาด: ระบบไม่สามารถค้นหารีจิสตรีคีย์หรือค่าที่ระบุ" ปรากฎว่า W32Time ไม่ได้เริ่ม ...
msb

ดังนั้น " [\\machine\]" หมายความว่าสามารถทิ้งไว้ในเครื่องเดียวกันได้หรือไม่?
Peter Mortensen

2

ลองดูที่w32tmเครื่องมือบรรทัดคำสั่ง สามารถตั้งค่าและสอบถามการกำหนดค่าและรายงาน a / stripchart ของการชดเชยเวลาด้วยคอมพิวเตอร์เครื่องอื่น


1
/queryตัวเลือกที่ไม่สามารถใช้งานบน XP
Iszi

5
ลองnet time /querysntpดู
ฟราน

1
@Fran ที่ใช้งานได้ ฉันหวังว่าจะได้รับคำสั่งเดียวที่ข้ามแพลตฟอร์ม แต่ดูเหมือนว่าฉันอาจต้องใช้สองคำสั่งที่แตกต่างกัน - หรือเขียนไฟล์แบตช์ที่มีการตรวจจับแพลตฟอร์มเพื่อกำหนดคำสั่งที่จะเรียกใช้
Iszi

1
@lszi ในสคริปต์ของฉันฉันทดสอบการมีอยู่ของผู้ใช้ C: \ หากฉันพบโฟลเดอร์นั้นฉันรู้ว่าฉันอยู่ในกล่อง post-XP
Fran

1
@Fran คุณสามารถเขียนคำตอบของคุณเองที่มีทั้งคำสั่งหรือไม่ นอกจากนี้ฉันจะใช้คำสั่งอะไรเพื่อตรวจสอบเวลาซิงค์ที่สำเร็จครั้งล่าสุดสำหรับ XP
Iszi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.