mirror of
https://github.com/actions/runner-images.git
synced 2025-12-11 03:27:05 +00:00
87 lines
2.2 KiB
PowerShell
87 lines
2.2 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
|
|
This script migrates given VM to another datastore
|
|
|
|
.PARAMETER VMName
|
|
VM name to migrate (Example "macOS-10.15_20201012.4")
|
|
|
|
.PARAMETER TargetDataStore
|
|
Target datastore (Example "ds-image")
|
|
|
|
.PARAMETER VIServer
|
|
vCenter address (Example "10.0.1.16")
|
|
|
|
.PARAMETER VIUserName
|
|
vCenter username (Example "Administrator")
|
|
|
|
.PARAMETER VIPassword
|
|
vCenter password (Example "12345678")
|
|
#>
|
|
|
|
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory)]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$VMName,
|
|
|
|
[Parameter(Mandatory)]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$TargetDataStore,
|
|
|
|
[Parameter(Mandatory)]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$VIServer,
|
|
|
|
[Parameter(Mandatory)]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$VIUserName,
|
|
|
|
[Parameter(Mandatory)]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$VIPassword,
|
|
|
|
[string]$JobStatus,
|
|
|
|
[int32]$CpuCount,
|
|
|
|
[int32]$CoresPerSocketCount,
|
|
|
|
[int64]$Memory
|
|
)
|
|
|
|
# Import helpers module
|
|
Import-Module $PSScriptRoot\helpers.psm1 -DisableNameChecking
|
|
|
|
# Connection to a vCenter Server system
|
|
Connect-VCServer -VIServer $VIServer -VIUserName $VIUserName -VIPassword $VIPassword
|
|
|
|
# Clear previously assigned tag with VM Name
|
|
try {
|
|
Remove-Tag $VMName -Confirm:$false
|
|
} catch {
|
|
Write-Host "Tag with $VMName doesn't exist"
|
|
}
|
|
|
|
$vm = Get-VM $VMName
|
|
if (($env:AGENT_JOBSTATUS -and $env:AGENT_JOBSTATUS -eq 'Failed') -or ($JobStatus -and $JobStatus -eq 'failure')) {
|
|
try {
|
|
if ($vm.PowerState -ne "PoweredOff") {
|
|
Stop-VM -VM $vm -Confirm:$false -ErrorAction Stop | Out-Null
|
|
}
|
|
Set-VM -VM $vm -Name "${VMName}_failed" -Confirm:$false -ErrorAction Stop | Out-Null
|
|
Write-Host "VM has been successfully powered off and renamed to [${VMName}_failed]"
|
|
} catch {
|
|
Write-Host "##vso[task.LogIssue type=error;]Failed to power off and rename VM '$VMName'"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
try {
|
|
Move-VM -Vm $vm -Datastore $TargetDataStore -ErrorAction Stop | Out-Null
|
|
Write-Host "VM has been moved successfully to target datastore '$TargetDataStore'"
|
|
} catch {
|
|
Write-Host "##vso[task.LogIssue type=error;]Failed to move VM '$VMName' to target datastore '$TargetDataStore'"
|
|
exit 1
|
|
}
|