70 lines
1.9 KiB
PowerShell
70 lines
1.9 KiB
PowerShell
function Create-VM {
|
|
if (-not (docker images windows-local -q)) {
|
|
Write-Host "Image not found locally. Building..."
|
|
docker build -t windows-local ..
|
|
} else {
|
|
Write-Host "Image found locally. Skipping build."
|
|
}
|
|
|
|
docker compose -f ../compose.yml up -d
|
|
|
|
while ($true) {
|
|
try {
|
|
$response = Invoke-WebRequest -Uri "http://localhost:5000/probe" -Method GET -UseBasicParsing
|
|
if ($response.StatusCode -eq 200) {
|
|
break
|
|
}
|
|
} catch {
|
|
Write-Host "Waiting for a response from the computer control server. When first building the VM storage folder this can take a while..."
|
|
Start-Sleep -Seconds 5
|
|
}
|
|
}
|
|
|
|
Write-Host "VM + server is up and running!"
|
|
}
|
|
|
|
function Start-LocalVM {
|
|
Write-Host "Starting VM..."
|
|
docker compose -f ../compose.yml start
|
|
while ($true) {
|
|
try {
|
|
$response = Invoke-WebRequest -Uri "http://localhost:5000/probe" -Method GET -UseBasicParsing
|
|
if ($response.StatusCode -eq 200) {
|
|
break
|
|
}
|
|
} catch {
|
|
Write-Host "Waiting for a response from the computer control server"
|
|
Start-Sleep -Seconds 5
|
|
}
|
|
}
|
|
Write-Host "VM started"
|
|
}
|
|
|
|
function Stop-LocalVM {
|
|
Write-Host "Stopping VM..."
|
|
docker compose -f ../compose.yml stop
|
|
Write-Host "VM stopped"
|
|
}
|
|
|
|
function Remove-VM {
|
|
Write-Host "Removing VM and associated containers..."
|
|
docker compose -f ../compose.yml down
|
|
Write-Host "VM removed"
|
|
}
|
|
|
|
if (-not $args[0]) {
|
|
Write-Host "Usage: $($MyInvocation.MyCommand.Name) [create|start|stop|delete]"
|
|
exit 1
|
|
}
|
|
|
|
switch ($args[0]) {
|
|
"create" { Create-VM }
|
|
"start" { Start-LocalVM }
|
|
"stop" { Stop-LocalVM }
|
|
"delete" { Remove-VM }
|
|
default {
|
|
Write-Host "Invalid option: $($args[0])"
|
|
Write-Host "Usage: $($MyInvocation.MyCommand.Name) [create|start|stop|delete]"
|
|
exit 1
|
|
}
|
|
} |