查询域控制器和NTP服务器时间w32tm /监视器格式输出



我使用以下内容来测量域控制器和ntp服务器之间的时间偏移。

$Servers="ntp.xxxxx,ntp.xxxxx,dc1,dc2,dc3,dca,dcb,dcc"$ListDomains="domain1","domain2"Foreach($ListServers中的$Server){$time=(w32tm/stripchart/dataonly/computer:$Server/samples:1)[-1].split("[")[0]"$Server`:`t$Time"#|输出文件$timeFile-追加$time="}ForEach($ListDomains中的$Domain){"**$Domain**"w32tm/monitor/domain:"$domain.unisa.edu.au"/nowarn/threads:5}

这是有效的,但输出很糟糕。域1

itupw-xxxxx.xxxxxxxxxxxxxx[666.666.6.76:123]:
    ICMP: 0ms delay
    NTP: -0.0099384s offset from itupw-xxxxx.xxxxxxxxxxxxxx
     RefID: itupw-xxxxx.xxxxxxxxxxxxxx[22222222222222]
        Stratum: 5
itupw-xxxxx.xxxxxxxxxxxxxx[999.666.6.76:123]:
    ICMP: 0ms delay
    NTP: -0.0093544s offset from itupw-xxxxx.xxxxxxxxxxxxxx
        RefID: itupw-xxxxx.xxxxxxxxxxxxxx[22222222222222]
        Stratum: 5

有人能建议一种格式化的方法吗?这样数据更容易比较?我们只对名称、ICMP、NTP(偏移量)感兴趣。

由于NTP框是Solaris,我们不能使用WMI查询。

谢谢,Amelia

尝试一下。它读取w32tm标准输出,并将其解析为自定义对象,并将它们放入数组中。您可以像处理任何其他对象集合一样处理数组。

$output1=&w32tm/monitor/domain:yourdomain.com/threads:5$stdOutStart=8$output=$output1[$stdOutStart..$output1.Length]$timeInfos=@()for($i=0;$i-lt$output.Length;$i+=4){$server=$output[$i]。拆分('')[0]$icmp=$output[$i+1].Trim().Split('')[1]$offset=$output[$i+2].Trim().Split('')[1]$timeInfos+=新建对象PsObject-属性@{服务器=$服务器ICMP=$ICMP偏移=$偏移}}$timeInfos

最新更新