找回密码
 加入
搜索
查看: 9821|回复: 36

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

  [复制链接]
发表于 2008-5-11 19:51:10 | 显示全部楼层 |阅读模式
想知道用wmi或者api怎么写能得到局域网内服务器上的时间..
net time这样的命令不要去用了..

谁能帮下忙

[ 本帖最后由 木纳 于 2008-7-10 11:45 编辑 ]
 楼主| 发表于 2008-5-12 17:45:20 | 显示全部楼层
天,,哪位大大出来帮个手哇...
发表于 2008-5-12 21:29:36 | 显示全部楼层
源码区 有个时间同步软件,很COOL,可以下载分析下代码,也许有用!!!
发表于 2008-5-12 22:51:39 | 显示全部楼层
原帖由 abowan 于 2008-5-12 21:29 发表
源码区 有个时间同步软件,很COOL,可以下载分析下代码,也许有用!!!


说句实话,那个不是很看得懂
发表于 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或者第三方来获取时间.

苦于找不到怎么做,谁帮下手看看
发表于 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,进行时间对比)
[SYStime]
On=1
Time=\\192.168.0.250


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

这个用到net time命令的..

谁能帮忙解决下,怎么不用net time命令或第三方软件,可以获取到192.168.0.250主机上的时间呢?
发表于 2008-5-15 16:27:55 | 显示全部楼层
有简单的为什么不用?真想不明白。。。NET TIME多么简单洁啊。

1分钟可以做好的工作,非要1天或者更长的时间去实现,难道这就体现了技术吗?
发表于 2008-5-15 16:35:10 | 显示全部楼层
看来我说的不够仔细
你可以开个完全共享。
然后再里面新建文件夹,然后再获取文件夹的创建时间,这个也就是服务器的时间了。
 楼主| 发表于 2008-5-15 16:36:21 | 显示全部楼层


虽然居士批评的俺接受,但还是想知道,如果能不借助第三方软件,就能获取到主机上的时间,更能提高俺学习autoit的兴趣.
发表于 2008-5-15 16:47:05 | 显示全部楼层
谢谢10楼的 同志!
还有11的居士说的很对 NET TIME就能解决的问题为什么要弄的那么复杂呢!

[ 本帖最后由 59993330 于 2008-5-15 16:48 编辑 ]
发表于 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
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 09:38 , Processed in 0.202575 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表