Skip to content

Instantly share code, notes, and snippets.

@cloudchristoph
Last active December 8, 2016 19:40
Show Gist options
  • Save cloudchristoph/25b77a0afcbd95c43aae724e66ed7fe7 to your computer and use it in GitHub Desktop.
Save cloudchristoph/25b77a0afcbd95c43aae724e66ed7fe7 to your computer and use it in GitHub Desktop.
# Change VM names to your own names
$baseVMs = @("ROUTER","AD")
$sqlVMs = @("SPSQL2016")
$sharepointVMs = @("SP2016-1","SP2016-2")
# -------------------------------------------------------------------------------------------------
function Start-VMSet($vmSet){
$vmStarted = $false
$waitTime = 10
foreach ($vmName in $vmSet) {
$vm = Get-VM -Name $vmName
write-host $vm.Name ": " -NoNewline
switch ($vm.State) {
"Running" { write-host "already running" -f Green }
"Off" {
write-host "starting" -f Cyan
Start-VM -VM $vm
$vmStarted = $true
}
default { write-host "unknown state:" $vm.State -f Yellow }
}
}
if ($vmStarted) {
write-host "Waiting for" $waitTime "seconds for machines to boot up..."
Start-Sleep -Seconds $waitTime
}
}
function Stop-VMSet($vmSet){
foreach ($vmName in $vmSet) {
$vm = Get-VM -Name $vmName
write-host $vm.Name ": " -NoNewline
switch ($vm.State) {
"Off" { write-host "already stopped" -f Green }
"Running" {
write-host "stopping" -f Cyan
Stop-VM -VM $vm
}
default { write-host "unknown state:" $vm.State -f Yellow }
}
}
}
write-host "1....: Start VMs`n2....: Stop VMs"
$command = Read-Host "Well?"
if ($command -eq 2 -and (Get-VM | ? { $_.State -eq "Running" }).Count -eq 0) {
write-host "Funny :) - There is no VM running. Did you mean start?" -f Yellow
exit
}
switch ($command) {
1 { # Start
write-host "Starting base VMs..." -f Magenta
Start-VMSet $baseVMs
write-host "Starting SQL VMs..." -f Magenta
Start-VMSet $sqlVMs
write-host "Starting SharePoint VMs..." -f Magenta
Start-VMSet $sharepointVMs
}
2 { # Stop
$withBaseVMs = Read-Host "Also stop base VMs? [y/N]"
write-host "Stopping SharePoint VMs..." -f Magenta
Stop-VMSet $sharepointVMs
write-host "Stopping SQL VMs..." -f Magenta
Stop-VMSet $sqlVMs
if ($withBaseVMs.ToLower() -eq "y") {
write-host "Stopping base VMs..." -f Magenta
Stop-VMSet $baseVMs
} else {
write-host "Skipped base VMs" -f Magenta
}
}
default { exit }
}
write-host "finished" -f Green
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment