VM_Always_On.ps1 1.2 KB

12345678910111213141516171819202122232425
  1. # VIRTUALBOX INSTALLATION PATH; CHANGE IF NOT INSTALLED IN THE DEFAULT LOCATION
  2. $vboxPath = ($Env:Programfiles +'\Oracle\VirtualBox\')
  3. # CASE SENSITIVE NAME OR UUID OF VMS TO KEEP RUNNING
  4. # ex @('Vm1','VM2','vm3','cfeb596c-3e21-1eec-a015-a496559a3d11')
  5. $alwaysRunningVMs = @('')
  6. # GET A LIST OF CURRENTLY RUNNING VMS
  7. $runningVMs = Invoke-Expression ('& "'+ $vboxPath +'vboxmanage.exe" list runningvms')
  8. Write-Host 'VMs Currently Running' -ForegroundColor 'Green'
  9. Write-Host '-----------------------------------------------' -ForegroundColor 'Green'
  10. Write-Host $runningVMs -ForegroundColor 'Green'
  11. Write-Host '-----------------------------------------------' -ForegroundColor 'Green'
  12. Write-Host
  13. # LOOP THROUGH $alwaysRunningVMs AND COMPARE TO RUNNING VMS
  14. for($i=0; $i -lt $alwaysRunningVMs.length; $i++){
  15. Write-Host ('*** Checking "'+ $alwaysRunningVMs[$i] +'"')
  16. if($runningVMs -like ('*"'+ $alwaysRunningVMs[$i] +'"*') -or $runningVMs -like ('*{'+ $alwaysRunningVMs[$i] +'}*')){
  17. Write-Host ("`t" + $alwaysRunningVMs[$i] +' is running')
  18. } else {
  19. Write-Host ("`tStarting "+ $alwaysRunningVMs[$i])
  20. Write-Host -NoNewline "`t"
  21. Invoke-Expression ('& "'+ $vboxPath +'vboxmanage.exe" startvm '+ $alwaysRunningVMs[$i] +' --type headless')
  22. }
  23. }