木纳 发表于 2008-5-11 19:51:10

获取局域网内服务器上的时间

想知道用wmi或者api怎么写能得到局域网内服务器上的时间..
net time这样的命令不要去用了..

谁能帮下忙

[ 本帖最后由 木纳 于 2008-7-10 11:45 编辑 ]

木纳 发表于 2008-5-12 17:45:20

天,,哪位大大出来帮个手哇...

abowan 发表于 2008-5-12 21:29:36

源码区 有个时间同步软件,很COOL,可以下载分析下代码,也许有用!!!:face (7):

ken0137 发表于 2008-5-12 22:51:39

原帖由 abowan 于 2008-5-12 21:29 发表 http://www.autoitx.com/images/common/back.gif
源码区 有个时间同步软件,很COOL,可以下载分析下代码,也许有用!!!:face (7):

说句实话,那个不是很看得懂

ken0137 发表于 2008-5-12 22:53:25

其实我也需要,要是简单点就好了,

木纳 发表于 2008-5-13 15:01:33

那个看了的,局域内如果有台机子可以用来代替公网上某台时间服务器,可以解决下带宽不够的问题。

想想,要是内网有500台机,每台经过网关去公网上对比时间,不是很麻烦.

要是内网有台,可以提供这样的服务,且不用什么net time之类,直接可以用au3可以实现,不就方便了..

期待高手出现~!

马甲 发表于 2008-5-13 19:27:35

你可以在服务器开个可写的共享。

然后就可以获取时间了呀。

以前的火狐就是用这个办法获取时间的

木纳 发表于 2008-5-14 13:33:04

开了共享,问题是不用net time或者第三方来获取时间.

苦于找不到怎么做,谁帮下手看看

59993330 发表于 2008-5-15 16:00:24

$ip = IniRead("time.ini", "时间", "服务器IP", "NotFound")

RunWait(@ComSpec & " /c " & 'net time \\& $ip /set /y', "", @SW_HIDE)
帮忙指导下
RunWait(@ComSpec & " /c " & 'net time \\& $ip /set /y', "", @SW_HIDE)
正确的写法该是什么样子的!
《time.ini》内容
[时间]
服务器IP=192.168.0.250

木纳 发表于 2008-5-15 16:13:30

回9楼的兄弟

#NoTrayIcon
$syspatchtime = IniRead(@ScriptDir & "\config.ini", "SYStime", "Time", "")
$TYPE06 = IniRead(@ScriptDir & "\config.ini", "SYStime", "On", "")
$nettime = 'net time'
$nettime2 = '/set /y'
If $TYPE06 = 1 Then RunWait(@ComSpec & ' /c ' & "" & $nettime & " " & $syspatchtime & " " & $nettime2 & "", "", @SW_HIDE)
exit


config.ini文件..(on是个开关,如果为0,就不对比时间;为1,进行时间对比)

On=1
Time=\\192.168.0.250


================================================

这个用到net time命令的..

谁能帮忙解决下,怎么不用net time命令或第三方软件,可以获取到192.168.0.250主机上的时间呢?

sanhen 发表于 2008-5-15 16:27:55

有简单的为什么不用?真想不明白。。。NET TIME多么简单洁啊。

1分钟可以做好的工作,非要1天或者更长的时间去实现,难道这就体现了技术吗?

马甲 发表于 2008-5-15 16:35:10

看来我说的不够仔细
你可以开个完全共享。
然后再里面新建文件夹,然后再获取文件夹的创建时间,这个也就是服务器的时间了。

木纳 发表于 2008-5-15 16:36:21

:face (9):

虽然居士批评的俺接受,但还是想知道,如果能不借助第三方软件,就能获取到主机上的时间,更能提高俺学习autoit的兴趣.

59993330 发表于 2008-5-15 16:47:05

谢谢10楼的 同志!:face (36):
还有11的居士说的很对 NET TIME就能解决的问题为什么要弄的那么复杂呢!

[ 本帖最后由 59993330 于 2008-5-15 16:48 编辑 ]

asdf 发表于 2008-5-15 17:28:01

可能需要权限,修改$strComputer为远程计算机名即可。
; 生成于 AutoIt Scriptomatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$Output=""
$Output = $Output & "Computer: " & $strComputer& @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_UTCTime", "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) then
   For $objItem In $colItems
      $Output = $Output & "Day: " & $objItem.Day & @CRLF
      $Output = $Output & "DayOfWeek: " & $objItem.DayOfWeek & @CRLF
      $Output = $Output & "Hour: " & $objItem.Hour & @CRLF
      $Output = $Output & "Milliseconds: " & $objItem.Milliseconds & @CRLF
      $Output = $Output & "Minute: " & $objItem.Minute & @CRLF
      $Output = $Output & "Month: " & $objItem.Month & @CRLF
      $Output = $Output & "Quarter: " & $objItem.Quarter & @CRLF
      $Output = $Output & "Second: " & $objItem.Second & @CRLF
      $Output = $Output & "WeekInMonth: " & $objItem.WeekInMonth & @CRLF
      $Output = $Output & "Year: " & $objItem.Year & @CRLF
      if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
      $Output=""
   Next
Else
   Msgbox(0,"WMI 输出","No WMI Objects Found for class: " & "Win32_UTCTime" )
Endif
页: [1] 2 3
查看完整版本: 获取局域网内服务器上的时间