我有点放弃在200台Windows服务器2003和2008中找到NTP IP地址。 我尝试过PowerShell脚本(Here)和(Here)
仍然无法获得任何NTP ip。
当我在命令提示符下运行w32tm /query /status
时,我会得到
飞跃指标:0(无警告) Stratum:5(辅助参考 - 由(S)NTP同步) 精度:-6(每蜱15.625ms) 根延迟:0.1293793s 根分散:0.2016004s ReferenceId:0x00000000(源IP: 192.xxx.xxx.xxx ) 上次成功同步时间:2014年7月15日下午3:39:07 来源:Host.LocalDomain.com 民意调查时间:12(4096s)
我需要一些批量/ shell,我可以导入服务器列表(Windows 2003/2008 / 2008R2),输出将是源IP 。 我只是想确保我的所有服务器都使用相同的IP地址。 如果我可以使用其他凭证,那将是很好的。
感谢您的帮助。
答案 0 :(得分:0)
这将返回NTP服务器的IP。先决条件:RemoteRegistry在服务器上运行,当然也可以访问远程注册表。
$Serverlist = cat $env:userprofile\Desktop\Test.txt
foreach ($Server in $Serverlist) {
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server)
$objKey = $Reg.OpenSubKey("SYSTEM\\CurrentcontrolSet\\Services\\W32Time\\Parameters")
$DNSNTP = $objKey.GetValue("NtpServer")
$DNSNTP = ($DNSNTP = $DNSNTP.Split(','))[0]
([System.Net.DNS]::GetHostAddresses($DNSNTP)) | Select -ExpandProperty IpAddressToString
}
编辑:
因为我似乎误解了这个问题
这是从W32TM返回referenceID字段的内容。但是,这将从FIXED点提取数据。如果你的设置有什么不同,你将不得不围绕调用数组元素,分割和子串。另一方面,如果有一个域设置,我的referenceID将返回ntp服务器的IP地址...此外,您必须在服务器上设置Enable-PSremoting -force以便它们接受呼叫。
$Serverlist = cat $env:userprofile\Desktop\Test.txt
foreach ($Server in $Serverlist) { Invoke-Command -Command {(((w32tm /query /status)))[5].split(':')[2].TrimEnd(')') -replace " ",""} -Computername $Server