Milestone 5 480.psm1 '480 Utils' - InaFricke/SEC-480 GitHub Wiki

Milestone 5 - 480.psm1 '480-Utils'

Outline

  1. Connect to vCenter

  2. Prompt for Clone Type 1 = Linked 2 = Full

3.Prompt for:

  • Source VM

  • Snapshot (default = Base)

  • ESXi Host

  • Datastore

  • Network

  • New Clone Name

  1. Validate Each One (Single validation)

If invalid: Print valid options

  1. Exit

I worked with Claude to create this script

# Propmt for variables

$SourceVM = Read-Host "Enter source VM Name"
$SnapshotName = Read-Host "baseline"
$VMHostName = Read-Host "Enter VMHost name"
$DatastoreName = Read-Host "datastore2"
$FullCloneName = Read-Host "Enter name of full clone"


# Choose source vm
$vm = Get-VM -Name $SourceVM
$snapshot = Get-Snapshot -VM $vm -Name $SnapshotName
$vmhost = Get-VMHost -Name $VMHostName
$ds = Get-Datastore -Name $DatastoreName

# Linked Clone Name

$linkedClone = "{0}.linked" -f $vm.name

# Creating temp linked clone

$linkedvm = New-VM `
	-LinkedClone `
	-Name $linkedClone `
	-VM $vm `
	-ReferenceSnapshot $snapshot `
	-VMHost $vmhost `
	-Datastore $ds `

# Create seperate clone
$newvm = New-VM `
	-Name $FullCloneName `
	-VM $linkedvm `
	-VMHost $vmhost `
	-Datastore $ds `

# Snapshot full clone
$newvm | New-Snapshot -Name $SnapshotName

# Remove Temp linked clone

$linkedvm | Remove-VM -DeletePermanently -Confirm:$false