使用PowerCLI给ESXi批量设置时间和配置NTP

在现代的各种业务系统中,时间同步很重要。现在VMware的虚拟化解决方案应用非常广泛,给ESXi宿主机一个统一准确的时间,也给客户机系统一个准确的时间。

生产环境中主机数量少的话倒是可以手动设置,但是到了十几台甚至更多,手动设置费时费力还容易出错。好吧,相信你也比较懒。但是我们懒人有懒办法呀。

关于VMware PowerCLI是什么东西,以及如何安装,在 命令行操作vSphere--VMware PowerCLI安装 这篇文章里有详细介绍,此处不再叨叨啦。

原理嘛就是用PowerCLI连接到VC上边去,给ESXi下发配置并配置重启ntp,ESXi所有的高级设置都可以设置,我发现PowerCLI真是个好东西!

好了,下面就直接丢代码出来了。下面介绍了一次性设置时间和设置NTP两种方式,各取所需。当然,都是全自动的。推荐架设内网NTP的方式。

#连接VC
$VC='192.168.xx'
$UName='administrator@vsphere.local'
$UPass='yourpass'
Connect-VIServer -Server $VC -User $UName -Password $UPass

#方案一:模拟手动更改主机时间
Foreach($HostIP in Get-VMHost){
    $esxcli = Get-EsxCli -VMHost $HostIP -V2
    $arguments = $esxcli.system.time.set.CreateArgs()
    $arguments.year = $(Get-Date -Format 'yyyy')
    $arguments.month = $(Get-Date -Format 'MM')
    $arguments.day = $(Get-Date -Format 'dd')
    $arguments.hour = $(Get-Date -Format 'HH')-8
    $arguments.min = $(Get-Date -Format 'mm')
    $esxcli.system.time.set.Invoke($arguments)
}
#方案二:设置NTP(推荐)
Foreach($HostIP in Get-VMHost){
    Add-VmHostNtpServer -NtpServer "120.25.115.20" -VMHost $HostIP
    Add-VmHostNtpServer -NtpServer "ntp1.aliyun.com" -VMHost $HostIP
    Get-VMHostService -VMHost $HostIP | where { $_.Key -eq "ntpd" } | Start-VMHostService
    Get-VMHostService -VMHost $HostIP | where { $_.Key -eq "ntpd" } | Set-VMHostService -Policy "on" -Confirm:$false
}
#查询主机时间
Foreach($HostIP in Get-VMHost){
    $esxcli = Get-EsxCli -VMHost $HostIP -V2
    $esxcli.system.time.get.Invoke()
}

Get-VMHost获取的是当前VC下边的所有主机,作用范畴也是当前VC下边的所有主机。

步骤解读:第一个代码块是连接VC,第二个是获取你本机的当前时间设置到ESXi主机,第三个是设置NTP并重启服务与设置开机自启,第四个是查询下各主机时间。相信小伙伴们一看就懂了!

此处demo中的主机是用的IP标识的,建议使用DNS名称来区分标识主机。

posted @ 2019-06-16 19:22  zerlong  阅读(1506)  评论(0编辑  收藏  举报