2017-11-11 145 views
1

我寫了一個PowerShell腳本來啓動/停止VM如下工作但有錯誤。PowerShell腳本來的VirtualBox虛擬機的saveState和每次

$vmstate = (vboxmanage showvminfo $vma --machinereadable | % { if ($_ -like 'VMState="*"') { $_ } }) 

Write-Host $vmstate 

if ($vmstate -like '*run*') { 
    Write-Host "Wait while "$vma" is powered off (saving state)" 
    vboxmanage controlvm $vma savestate 
} 
else { 
    Write-Host "Wait while "$vma" is started" 
    vboxmanage startvm $vma 
} 

啓動VM每次都工作正常。 但是,保存狀態仍然有效,但在PS ISE輸出窗口中顯示此錯誤。

等待而W2008_21_06_A斷電(節能狀態)vboxmanage: 0%... 10%... 20%... 30%... 40%... 50%... 60 %... 70%... 80%... 90%... 100%在 C:\ Users \ craig \ My Documents \ vbox.ps1:18 char:5 + vboxmanage controlvm $ vma savestate + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +類別:未指定:(0%... 10%。 ..20%.... 0%... 90%... 100%:字符串)[],RemoteException的 + FullyQualifiedErrorId:NativeCommandError

我得到的印象是它已保存狀態在VBoxManage制定結果之前!?!

任何想法?

  • 垂直框v5.1.24
  • 的PowerShell 4.0版
  • 的Windows 8.1

問候,

克雷格

回答

0

我編輯全路徑腳本vboxmanage就跑從命令行與powershell -f和錯誤不會發生。

所以我想這是與ISE有關。

新代碼:

$vmstate = (& "C:\Program Files\Oracle\VirtualBox\vboxmanage.exe" showvminfo $vma --machinereadable | % { if ($_ -like 'VMState="*"') { $_ } }) 

Write-Host $vma $vmstate 

if ($vmstate -like '*run*') 
{ 
    # Power off VM before restoring snapshot 
    Write-Host "Wait while "$vma" is powered off (saving state)" 
    & "C:\Program Files\Oracle\VirtualBox\vboxmanage.exe" controlvm $vma savestate 
} 
else 
{ 
    # Start VM 
    Write-Host "Wait while "$vma" is started" 
    & "C:\Program Files\Oracle\VirtualBox\vboxmanage.exe" startvm $vma 
} 

在命令行:

powershell -f "C:\Users\craig\My Documents\vbox.ps1" 

如果有人想分享爲何ISE會導致錯誤不知道。