I wanted to know how many disks in our environment are thin provisioned, so I wrote a quick function to export that list to a CSV file.
I have it pull the VM name, vmdk path & name, Size in GB, and if it’s Thin Provisioned (Boolean, which should always be true).
Just copy & paste this into a .ps1 file and run it. The initial instantiation of $vms takes a while, depending on the size of your environment, but the rest goes quickly. Make sure you’re connected to a host or vcenter before you run it, or you won’t get anything.
function find-thin{
write-host -fore green `n "getting all VMs, this may take a while"
$vms = get-vm |sort name |get-view
Write-host -fore green `n "Starting Scan"
$vmdks = @()
foreach ($vm in $vms){
foreach ($device in $vm.config.hardware.Device){
if($device.GetType().Name -eq "VirtualDisk"){
if($device.Backing.ThinProvisioned){
$info = "" | Select VM, File, SizeInGB, Thin
$info.VM = $vm.name
$info.File = $device.backing.filename
$info.SizeInGB = $device.capacityinkb/1048576
$info.thin = $device.Backing.ThinProvisioned
$vmdks += $info
}
}
}
}
write-host -fore green `n "finished searching all VMs" `n
$vmdks | export-csv d:\thindisk.csv
}
find-thin
To change where the file is saved, simply change the path in line 27 to the destination of your choice.