Milestone 5 480.psm1 '480 Utils' - InaFricke/SEC-480 GitHub Wiki
Milestone 5 - 480.psm1 '480-Utils'
Outline
-
Connect to vCenter
-
Prompt for Clone Type 1 = Linked 2 = Full
3.Prompt for:
-
Source VM
-
Snapshot (default = Base)
-
ESXi Host
-
Datastore
-
Network
-
New Clone Name
- Validate Each One (Single validation)
If invalid: Print valid options
- 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