PowerCLI: vmware tools timesync

Tick Tack

Die Uhrzeit-Synchronisation zwischen ESX Host und Client-VM ist sehr wichtig. Fehlt diese, so kann es zu deutlichen Zeitabweichungen zwischen VMs kommen, was weitere Probleme nach sich zieht. Zum Beispiel verweigert Kerberos die Anmeldung, wenn die Zeit um mehr als 5 Minuten abweicht.

Die Kontrolle, ob die Uhrzeit zwischen Host und VM synchronisiert wird ist simpel.

Settings > Options > VMware Tools

Die in der Grafik unten markierte Ckeckbox muss gesetzt sein.

timesyncHost01Für eine oder zwei VMs ist das kein Problem. Was aber tun wenn man mehrere hundert VMs überprüfen und den Status setzen möchte? In so einem Fall hilft PowerCLI.

Timesync Status prüfen

Der folgende PowerCLI Oneliner stammt von Grzegorz Kulikowski. Es listet alle VMs mit deren VMtools Timesync Optionen (true/false).

get-vm|select name, @{N="SyncWithHost";E={$_.extensiondata.config.tools.synctimewithhost}}

Status setzen

Die Einstellungen aller betroffenen VMs manuell verändern wäre eine wenig motivierende Beschäftigungstherapie für dressierte Meerschweinchen. Besser man beschäftigt sich einige Minuten mit Powershell und der großen Suchmaschine. Im Blog von vNoob wurde ich fündig. Sein dort vorgestelltes Skript kam meinen Vorstellungen schon sehr nahe. Ich habe es etwas modifiziert, da ich nicht pauschal alle VMs ändern wollte, sondern eine Auswahl. Die Veränderung ermöglicht ein Suchmuster für den VM Namen und lässt den gewünschten Zustand wählen.

# SetTimeSync.ps1
param($vm="*", $sync=$true)

$spec = new-object VMware.Vim.VirtualMachineConfigSpec
$spec.tools = New-Object VMware.Vim.ToolsConfigInfo
$spec.tools.syncTimeWithHost = $sync

$vms=get-vm |? {$_.name -like $vm}| ?{$_.extensiondata.config.tools.synctimewithhost -like !$sync}
$vms|select -expand name
$vms|%{$_.extensiondata.reconfigvm_task($spec)}

Download SetTimeSync.ps1 (ZIP) SetTimeSync

Achtung! Verwendung auf eigene Gefahr! Das Skript verändert den Zustand der Zeitsynchronisation mit dem Host ohne weitere Nachfrage.

Beispiel:

./settimesync.ps1 -vm VDI-W7* -sync $true

Der Aufruf sucht alle VMs, deren Name mit VDI-W7 beginnt und deren Timesync derzeit nicht gesetzt ist. Der Status wird invertiert. Also aus false wird true oder umgekehrt.

Links

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert