Gelegentlich kommt es vor: Eine VM läßt sich werder beenden, hart abschalten, noch neu starten. Ein sogenannter Zombie.
Unter vSphere5 funktionieren PowerCLI und ESXCLI etwas anders als unter vSphere 4.x.
Methode1: (Soft)
> $VM = Get-VM.<VM-Name> > $esxcli = Get-EsxCli -vmhost ($VM.Host) > $WorldID = ($esxcli.vm.process.list() | Where { $_.DisplayName -eq $VM.Name}).WorldID > $result = $esxcli.vm.process.kill("soft", $WorldID) > $result
Methode2: (Hard)
…und bist Du nicht willig….. 🙂
> $VM = Get-VM.<VM-Name> > $esxcli = Get-EsxCli -vmhost ($VM.Host) > $WorldID = ($esxcli.vm.process.list() | Where { $_.DisplayName -eq $VM.Name}).WorldID > $result = $esxcli.vm.process.kill("hard", $WorldID) > $result
Auch Wildcards lassen sich hier einsetzen (Achtung!):
> $VM = Get-VM.<VM-Namepart>*
Schiesst alle VMs ab, die mit dem Teilamen beginnen. Weitere Informationen zum Thema finden sich im Originalpost bei Virtu-Al. Dort befindet sich auch eine PS Funktion, die obige Befehle vereinfacht. Die Syntax ist dann reduziert auf:
Get-VM <VM-Name> | Kill-VM
Eine alternative Methode bedient sich der esxcli cmdlets
Dies ist eine moderne Abwandlung (vSphere 5) einer Methode, die ich in einem älteren Artikel unter vSphere 4.x beschrieben hatte.
connect-viserver esx1.mydomain.com
Alle aktiven VM Prozesse auflisten.
$esxcli = get-esxcli $esxcli.vm.process.list()
Hier muss man die WorldID der Zombie-VM notieren.
$esxcli.vm.process.kill("hard", <WorldID>)
Hier ist <WorldID> durch 3867 zu ersetzen.