New-SnapShot
VMware: Creates a new snapshot of a virtual machine
#Requires -Version 5.1
#Requires -Modules VMware.VimAutomation.Core
[CmdletBinding(DefaultParameterSetName = "byName")]
Param(
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[string]$VIServer,
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[pscredential]$VICredential,
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[string]$VMId,
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[string]$VMName,
[Parameter(Mandatory = $true, ParameterSetName = "byID")]
[Parameter(Mandatory = $true, ParameterSetName = "byName")]
[string]$Name,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[string]$Description,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[switch]$Memory,
[Parameter(ParameterSetName = "byID")]
[Parameter(ParameterSetName = "byName")]
[switch]$Quiesce
)
Process {
$vmServer = $null
try {
[string[]]$Properties = @('Name', 'Created', 'PowerState', 'SizeGB', 'Description', 'IsCurrent', 'Id')
if ([System.String]::IsNullOrWhiteSpace($Description)) { $Description = " " }
$vmServer = Connect-VIServer -Server $VIServer -Credential $VICredential -ErrorAction Stop
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
if ($PSCmdlet.ParameterSetName -eq "byID") {
$machine = Get-VM -Server $vmServer -Id $VMId -ErrorAction Stop
}
else {
$machine = Get-VM -Server $vmServer -Name $VMName -ErrorAction Stop
}
$result = New-Snapshot -Server $vmServer -VM $machine -Name $Name -Description $Description -Memory:$Memory -Quiesce:$Quiesce -Confirm:$false -ErrorAction Stop | Select-Object $Properties
foreach ($item in $result) {
$item | Add-Member -NotePropertyName 'Timestamp' -NotePropertyValue $timestamp -Force
Write-Output $item
}
}
catch { throw }
finally { if ($null -ne $vmServer) { Disconnect-VIServer -Server $vmServer -Force -Confirm:$false -ErrorAction SilentlyContinue } }
}IP address or DNS name of the vSphere server
PSCredential object for authenticating with the server
ID of the virtual machine
Name of the virtual machine
Name for the new snapshot
Description of the new snapshot
Off
Preserve the VM's memory state with the snapshot
Off
Use VMware Tools to quiesce the file system