Запросить контроллеры домена и NTP-серверы время вывода в формате w32tm /monitor
Я использую следующее для измерения временного сдвига между нашими контроллерами домена и серверами ntp.
$ Servers = "ntp.xxxxx, ntp.xxxxx, dc1, dc2, dc3, dca, dcb, dcc" $ ListDomains = "domain1", "domain2" Foreach ($ Server в $ListServers) { $time = (w32tm /stripchart /dataonly /computer:$Server /samples:1)[-1].split("[")[0] "$Server`: `t $Time" #| вне файла $ timeFile -append $ time = "" } ForEach ($ Domain в $ListDomains) { "** $ Домен **" w32tm /monitor /domain:"$Domain.unisa.edu.au" /nowarn / потоков: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.
Спасибо амелия
1 ответ
Дает это попробовать. Это читает w32tm
stdout и разбирает его на пользовательские объекты и помещает их в массив. Вы можете просто обработать массив как любую другую коллекцию объектов.
$ output1 = & w32tm / monitor /domain:yourdomain.com / threads: 5 $ stdOutStart = 8 $ output = $ output1 [$ stdOutStart.. $ output1.Length] $ timeInfos = @ () для ($i = 0; $i -lt $output.Length; $i+=4) { $server = $output[$i].Split(' ')[0] $icmp = $output[$i+1].Trim().Split(' ')[1] $offset = $output[$i+2].Trim().Split(' ')[1] $timeInfos += New-Object PsObject -Property @{ Сервер = $ сервер ICMP = $icmp Смещение = $ смещение } } $ timeInfos