Een Windows-virtuele machine start vaak correct op nadat deze is gemigreerd van VMware naar Proxmox VE, terwijl de installatie van VMware Tools nog steeds aanwezig is en mogelijk beschadigd is gebleven. Het probleem ontstaat wanneer de deïnstalleerder faalt, Windows Installer het oorspronkelijke pakket niet meer kan vinden, of verschillende services en stuurprogramma’s nog steeds geregistreerd staan, zelfs nadat de machine niet langer op VMware draait.
De sleutels tot het verwijderen van VMware Tools in 20 seconden
- Voorafgaand aan de procedure moet een herstelbare back-up van de virtuele machine beschikbaar zijn.
- De standaard deïnstallatie via Windows Installer moet altijd het eerste proberen zijn.
- Indien PowerShell het script blokkeert, kan de sessie alleen voor de huidige keer worden ingeschakeld.
- Geforceerde opschoning wijzigt services, mappen en registersleutels, waardoor het niet gegarandeerd is dat het op alle systemen zal werken.
Het onderstaande proces is bedoeld voor gevallen waarin VMware Tools zich na een migratie blijft verzetten tegen verwijdering. Het omvat een meer voorzichtige versie van het communityscript gepubliceerd door broestls, met activiteit logging, simulatie via -WhatIf, kopieën van bepaalde sleutels en een duidelijke scheiding tussen normale deïnstallatie en geforceerde opschoning.
Noch de maker van het oorspronkelijke script noch dit artikel kunnen garanderen dat het proces in alle Windows-installaties, versies van VMware Tools of Proxmox-configuraties zal werken. Het uitvoeren ligt volledig in de verantwoordelijkheid van de beheerder. Voordat services, stuurprogramma’s of registerbehoud worden gewijzigd, moet een volledige back-up van de virtuele machine worden gemaakt en getest of deze kan worden hersteld.
Voorbereiding van de virtuele machine vóór het verwijderen van VMware Tools
De opschoning mag niet beginnen met het verwijderen van mappen of registry-sleutels. VMware Tools kan stuurprogramma’s voor netwerk, opslag, video, tijdsync en communicatie met de hypervisor bevatten. Als Windows nog gebruikmaakt van één van deze componenten, kan een overhaaste verwijdering de verbinding doorknippen of het opstartproces verstoren.
De belangrijkste veiligheidsmaatregel is het hebben van een herstellbare back-up van de VM. Dit kan een backup van Proxmox, een uitgevoerde kloon, of een image zijn gemaakt met de gebruikelijke bedrijfssoftware. Een snapshot is handig voor kleine terugzetten, maar mag niet de enige bescherming zijn bij het verwijderen van services, entries in de installer of stuurprogramma’s.
Daarnaast moet de toegang tot de Proxmox-console worden gecontroleerd. Het is niet raadzaam om alleen op afstand toegang te vertrouwen, omdat de VMXNET3-netwerkinterface mogelijk verdwijnt tijdens de verwijdering van VMware Tools. Als de machine een statisch IP-adres gebruikt, kan deze nog gekoppeld zijn aan de oude netwerkkaart en moet opnieuw worden geconfigureerd op de VirtIO-adapter.
Controleer vóór verder gaan de volgende punten:
- Is er een herstellbare back-up of clone beschikbaar?
- Is er toegang tot Windows via de Proxmox-console?
- Zijn de benodigde VirtIO-stuurprogramma’s geïnstalleerd?
- Werkt de opstartschijf met de juiste driver in Proxmox?
- Heeft de nieuwe netwerkinterface connectiviteit?
- Is de QEMU Guest Agent geïnstalleerd of voorbereid op installatie?
- Is er een beheerdersaccount met toegang tot de lokale systemen?
VirtIO en de QEMU Guest Agent vervullen verschillende functies. VirtIO-stuurprogramma’s zorgen dat Windows paravirtualiseerde devices voor opslag, netwerk, geheugen en communicatie kan gebruiken. De QEMU Guest Agent creëert een communicatiekanaal tussen Proxmox en de gastbesturingssysteem voor beheer, informatie-opvraging en coördinatie van back-ups.
Normale deïnstallatie van VMware Tools moet worden geprobeerd voordat directe opschoning wordt uitgevoerd. Dit kan via ‘Geïnstalleerde toepassingen’, ‘Programma’s en onderdelen’ of via Windows Installer:
msiexec.exe /x "{PRODUCT-CODE}" /norestart /L*v "C:\Temp\vmware-tools-uninstall.log"
De code van het product varieert per geïnstalleerde versie, dus mag niet worden gekopieerd van een andere computer. Het script in dit artikel zoekt naar de juiste invoer, zonder gebruik te maken van Win32_Product, omdat dat queries kan doen die installatie- of reparatieprocedures activeren.
Wat te doen als PowerShell het script niet toestaat uit te voeren
Een veel voorkomende fout heeft niet direct met VMware Tools te maken, maar met de PowerShell-uitvoerbeleid. Windows kan .ps1-bestanden blokkeren wanneer de beleidsinstelling geen scripts toestaat of wanneer het bestand gekenmerkt is als gedownload van internet.
De eerste stap is PowerShell als administrator te openen, naar de map te navigeren waar het script staat en de actieve policies te bekijken:
Get-ExecutionPolicy -List
De resultaten tonen de policies voor MachinePolicy, UserPolicy, Process, CurrentUser en LocalMachine. De effectief geldende policy heeft prioriteit volgens de opdrachtgever.
Een minder ingrijpende optie is de policy slechts voor de huidige sessie te wijzigen:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\Remove_VMwareTools.ps1
De scope Process geldt alleen voor deze PowerShell-sessie. Het verandert niks aan de computer- of gebruikersinstellingen en verdwijnt zodra de sessie wordt afgesloten.
Zo kan het script tijdelijk worden uitgevoerd, maar voordat deze optie wordt gebruikt, moet het script in een teksteditor worden bekeken om te zien op welke services, mappen en registry-sleutels het gericht is.
Het is mogelijk het script te ontgrendelen door de bestandsmarkering ‘Gedownload van internet’ te verwijderen:
Unblock-File .\Remove_VMwareTools.ps1
.\Remove_VMwareTools.ps1
Ook kan een combinatie worden gemaakt van het ontgrendelen en een tijdelijke policy voor de sessie:
Unblock-File .\Remove_VMwareTools.ps1
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\Remove_VMwareTools.ps1
Alternatief is om de policy voor de gebruiker aan te passen naar RemoteSigned, wat deze behoudt na het sluiten van PowerShell:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Deze wijziging blijft behouden en wordt niet teruggedraaid bij afsluiten. Daarom is het verstandig om eerst te beoordelen of dit binnen de veiligheidsrichtlijnen van de organisatie past. Bij beheerde servers wordt aangeraden het alleen in de huidige sessie te wijzigen.
Wanneer Get-ExecutionPolicy -List aangeeft dat er restricties via MachinePolicy of UserPolicy gelden, is dat meestal afkomstig van groepsbeleid. Die prioriteit heeft voorrang op de lokale en sessiebeleid-instellingen. Raadpleeg in dat geval de systeembeheerder of organisatiebeleid voordat verdere actie wordt ondernomen.
Ook kan het script worden uitgevoerd via een aparte PowerShell-aanroep:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File ".\Remove_VMwareTools.ps1"
Het -NoProfile parameter voorkomt dat gebruikersprofielen worden geladen, waardoor het gedrag kan worden gestandaardiseerd. Houd er rekening mee dat groepsbeleidsinstellingen nog steeds prioriteit kunnen hebben.
Compleet en veilig script voor het verwijderen van VMware Tools
Het onderstaande script probeert eerst via Windows Installer te deïnstalleren. Bij falen wordt het registratietracebestand gelogd en stopt het zonder verdere acties.
Voor geforceerde opschoning moet -ForceCleanup worden meegegeven, maar vóór gebruik moet eerst met -WhatIf worden gecontroleerd welke acties worden ondernomen, zonder daadwerkelijk te wijzigen.
Het script kan worden opgeslagen als:
Remove_VMwareTools.ps1
Volledige script:
#Requires -Version 5.1
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Verwijdert VMware Tools uit een Windows VM die is gemigreerd naar Proxmox VE. Gemaakt door RevistaCloud.com
<-- Vaak te lang voor volledige herhaling hier, zie onderstaande samenvatting -->
Het script probeert eerst VMware Tools te deïnstalleren via Windows Installer, registreert activiteiten, en stopt indien dat lukt. Bij falen of expliciet met -ForceCleanup wordt de geforceerde opschoning uitgevoerd, waarbij services, sleutels en mappen worden verwijderd, met voorafgaande simulatie via -WhatIf. Het script is opgebouwd uit functies voor het vinden van uninstall-informatie en het exporteren van registreringssleutels, het stoppen en verwijderen van services, en het verwijderen van registry- en bestandsmappen. Na afloop wordt een bevestiging gegeven dat de opschoning kan worden voltooid na een herstart.
Het eerste uitvoeren zonder de geforceerde optie:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Unblock-File .\Remove_VMwareTools.ps1
.\Remove_VMwareTools.ps1
Dit probeert eerst de MSI-pakket en voert de standaard deïnstalleeracties uit. Bij succesvolle voltooiing herstarten en controleren op resten is aanbevolen.
Voor een simulatie van de opschoning:
.\Remove_VMwareTools.ps1 -ForceCleanup -WhatIf
De uitvoer toont welke services, sleutels en mappen verwijderd zouden worden, zonder dat er iets wijzigt.
Na bevestiging kan de echte opschoning worden gestart:
.\Remove_VMwareTools.ps1 -ForceCleanup
Om ook gedeelde VMware-mappen te verwijderen, gebruik:
.\Remove_VMwareTools.ps1 -ForceCleanup -RemoveSharedVmwareFolder
Wees voorzichtig met de laatste optie. Deze mag niet worden gebruikt op systemen met VMware Horizon agents, back-upsoftware, beveiligingscomponenten of andere toepassingen die gedeelde directories gebruiken met VMware Tools.
Na reboot controleren
Windows moet na de opschoning worden herstart. Sommige services worden pas volledig verwijderd zodra ze niet meer door processen worden gebruikt.
Enkele belangrijke punten om te controleren na herstart:
- Dat VMware Tools niet meer in Geïnstalleerde toepassingen wordt weergegeven.
- Dat services
VMToolsenVGAuthServiceverdwenen zijn. - Dat Windows zonder fouten opstart.
- Dat de systeelschijf nog toegankelijk is.
- Dat de VirtIO-netwerkverbinding werkt.
- Dat de IP-adresinstelling correct is geconfigureerd.
- Dat de QEMU Guest Agent actief is.
- Dat Proxmox de gastcontroller correct detecteert.
- Dat serverapplicaties naar behoren functioneren.
- Dat nieuwe back-ups succesvol worden voltooid.
Bij melding dat een IP-adres al aan een ander apparaat is toegewezen, is de kans groot dat deze nog gekoppeld is aan de verborgen VMXNET3-adapter. Het gebruik van Apparatenbeheer om deze te tonen en de oude interface te verwijderen is aanbevolen, nadat de VirtIO-adapter correct functioneert.
Het script verwijdert niet automatisch stuurprogramma’s uit de DriverStore, vanwege het risico dat dit apparaten voor opslag, netwerk of zelfs het opstartproces kan beïnvloeden. Het is aanbevolen om dergelijke stuurprogramma’s handmatig te controleren en te verwijderen met pnputil of via Apparaatbeheer, vooral als er twijfel bestaat.
Veelgestelde vragen
Is het noodzakelijk een back-up te maken vóór het uitvoeren van het script?
Ja. Het proces wijzigt services, register-sleutels en systeembestanden. Zorg dat een volledige, herstelbare back-up of clone beschikbaar is en dat deze kan worden hersteld via Proxmox-console.
Wat te doen als PowerShell aangeeft dat scripts niet kunnen worden uitgevoerd?
Gebruik Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass om slechts voor de huidige sessie de beleidsinstelling te wijzigen. Combineer indien nodig met Unblock-File als het script van internet afkomstig is.
Wat te doen als groepsbeleid de uitvoering blokkeert?
Policies als MachinePolicy en UserPolicy hebben prioriteit boven lokale instellingen. Neem contact op met de systeembeheerder en volg het bedrijfsbeleid voor het aanpassen van beleid.
Wordt gegarandeerd dat VMware Tools zonder problemen wordt verwijderd?
Nee. Afhankelijk van versie, installatie en afhankelijkheden kunnen problemen ontstaan. Het script is bedoeld als leidraad en moet eerst worden getest op een kopie of clone met een duidelijke herstelroute.
Bronnen:
- Communityscript
Remove_VMwareTools.ps1gepubliceerd door broestls op GitHub Gist. - Microsoft Docs over
Set-ExecutionPolicy,Get-ExecutionPolicyenUnblock-File. - Microsoft Docs over de uninstallatieopties en logging van
msiexec. - Microsoft Docs over werking van
sc.exe delete. - Proxmox VE-documentatie over VM’s, VirtIO en de QEMU Guest Agent.
- Virtio-win project, voor paravirtualisatie-stuurprogramma’s voor Windows.
