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