powerShellIcon

De volgende function zoekt eerst alle *.VMX bestanden op en vervangt daarna de extentie *.VMX naar *.VMDK. Deze *.VMDK bestanden worden in de $List geplaatst. Daarna worden alle VMDK’s gedefragmenteerd via de vmware-vdiskmanager.exe.

function Defrag-allVMDKs{
param([string]$path)
$vdiskmanager = “C:\Program Files\VMware\VMware Workstation\vmware-vdiskmanager.exe”
$parameter = “-d”
$List = get-childitem $path -recurse | where {$_.extension -eq “.vmx”} |
foreach-object -process { $_.FullName } | ForEach-Object {$_ -replace “.vmx”, “.vmdk”}
ForEach($vmdk in $List)
{
echo $vmdk
& $vdiskmanager $parameter $vmdk
}
}

Via het volgende commando kun de bovenstaande function gebruiken.

Defrag-allVMDKs <drive>\<path>

Als je dit in de Shell uitvoerd ziet het er als volgt uit:

image

5 thoughts on “Script: Defrag all Local VMDK’s.

  1. Was het niet zo dat wanneer je virtual disks defragmenteerd, ze automatisch groeien wanneer je niet meteen de totale grootte hebt gealloceerd?

  2. Hi Arne

    Let ook op dat het bij ons steeds vaker voorkomt dat vmdk en vmx naam niet overeenkomen. Kun je niet handiger de info van de VMDK naam ophalen?

    Plus ik zou nog een check inbouwen of er snapshots actief zijn. En dan bij actieve snapshot geen defrag uitvoeren, anders groeit je snapshot gigantisch

    Gabrie

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.