#Source : CodeMonkey Software http://codemonkeysoftware.atlassian.net
param (
$ServerName = $(throw 'Please specify Virtual Infrastructure ServerName or IP'),
$User = $(throw 'Please specify username'),
$Password = $(throw 'Please specify password'),
$VMName = $(throw 'Please specify VMName'),
$SnapshotName = $null
)
$s = get-pssnapin | where-object {$_.Name -eq "VMWare.VimAutomation.Core" }
if($s -eq $null)
{
add-pssnapin VMWare.VimAutomation.Core
}
function ResetSnapshot
{
if($server -eq $null -or $server.IsConnected -eq $false)
{
throw 'Unable to connect to $ServerName'
}
$vm = Get-VM -Name $VMName
if($vm -eq $null)
{
throw 'Unable to find specified VM $VMName'
}
$snapShot = $null
$snapShots = Get-SnapShot -VM $vm
if($SnapshotName -eq $null)
{
if($snapShots -eq $null -or $snapShots.Count -eq 0)
{
throw 'No snapshots for specified VM $VMName'
}
$snapShot = $snapShots[$snapshots.Count - 1]
}
else
{
$snapShot = $snapShots | Where-Object { $_.Name -ieq $SnapshotName }
}
if($snapShot -eq $null)
{
throw 'No snapshots for specified VM $VMName'
}
Write-Host ('Setting snapshot ' + $snapShot.Name + ' on VM ' + $vm.Name)
Set-VM -VM $vm -Snapshot $snapShot -confirm:$false -ErrorAction:Stop
$Message = "Restored default machine on "
Set-VM -VM $vm -Description $Message $vm.Name -confirm:$false -ErrorAction:Continue
}
try
{
cls
$server = Connect-VIServer -Server $ServerName -User $User -Password $Password
ResetSnapshot
}
catch
{
Write-Error $_
exit 1
}
finally
{
if($server -ne $null -and $server.IsConnected -eq $true)
{
Disconnect-VIServer -Server $server -Confirm:$false
}
}
|