mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 16:33:02 -05:00
36 lines
1.1 KiB
PowerShell
36 lines
1.1 KiB
PowerShell
param (
|
|
[Parameter(Mandatory)][string]$Name,
|
|
[string]$CheckpointName,
|
|
[Parameter(Mandatory)][string[]]$Files,
|
|
[Parameter(Mandatory)][string]$Destination
|
|
)
|
|
|
|
function Restore-VM ($Name, $CheckpointName) {
|
|
$VM = Get-VM -Name $Name
|
|
if ($VM.State -eq "Running") {
|
|
Stop-VM -Name $Name -TurnOff
|
|
}
|
|
|
|
if (-not $CheckpointName) {
|
|
$Checkpoint = Get-VMCheckpoint -VMName $Name |
|
|
Sort-Object -Property CreationTime -Descending |
|
|
select -First 1
|
|
} else {
|
|
$Checkpoint = Get-VMCheckpoint -VMName $Name -Name $CheckpointName
|
|
}
|
|
Restore-VMCheckpoint -VMCheckpoint $Checkpoint -Confirm:$false
|
|
|
|
Start-VM -Name $Name
|
|
}
|
|
|
|
function Deploy-VMFiles ($Name, $Files, $Destination) {
|
|
foreach ($File in $Files) {
|
|
$Leaf = Split-Path -Path $File -Leaf
|
|
$Dest = Join-Path $Destination $Leaf
|
|
Copy-VMFile -Name $Name -SourcePath $File -DestinationPath $Dest -FileSource Host -CreateFullPath -Force
|
|
}
|
|
}
|
|
|
|
Restore-VM -Name $Name -CheckpointName $CheckpointName
|
|
Deploy-VMFiles -Name $Name -Files $Files -Destination $Destination
|