Find vSphere templates with non-persistent disks
As we’re running a development lab, we use a lot of templates for machine deployment and a lot of non-persistent disks to allow machines to be easily restored to a clean-state. We’ve had issues where machines with non-persistent disks were converted to templates. In this case guest customisation will fail.
This script looks at your templates, and outputs a list of those with non-persistent drives.
# Set up an empty array
$arrTemplatesWithPersistentDrives = @()
# Get all the template objects
$objTemplates = Get-Template
# Loop through each template
foreach ($objTemplate in $objTemplates){
# Get the drives associated with that template
$objHardDisks = $objTemplate | Get-HardDisk
# Loop through each drive
foreach ($objHardDisk in $objHardDisks){
# If any of the drives are non-persistent, add the template object to the empty array
if ($objHardDisk.Persistence -match "non"){
$arrTemplatesWithPersistentDrives += $objTemplate
}
}
}
# List the names of the unique templates in the array (as a template with more than one non-persistent drive would appear more than once)
$arrTemplatesWithPersistentDrives | Sort-Object -Unique | Select-Object Name