winfsp/tools/deploy.ps1
2020-05-22 01:33:02 +01:00

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