我正在使用VirtualBox,并且希望能够使用Powershell脚本(单击gui上的按钮后)获取所有虚拟机的列表。
我知道您可以使用命令
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list vms
在cmd / batch中用列出所有VM,但是我似乎无法弄清楚如何使用powershell脚本显示输出。这就是为什么我想创建一个新的Powershell窗口来执行此命令,以便获得虚拟机列表。
我尝试这样做,但是什么也没有发生:
& 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' list vms
谢谢。
最好的问候, 约翰答案 0 :(得分:3)
您尝试过吗:
cmd /c 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' list vms
您还应该能够做到这一点:
powershell.exe "& 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' list vms"
修改
如果您想要一个新窗口,请使用此:
Start-Process powerShell.exe "& 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' list vms; pause"
pause
将在新窗口退出之前等待您按下Enter键。
答案 1 :(得分:0)
从事件(例如,单击)处理程序运行PowerShell脚本块时,该脚本块的输出将被简单丢弃。您需要做的是将输出捕获到全局变量中,如下所示:
Clear()
这会将输出分配给全局变量$Button4.Add_Click({$global:result = & 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' list vms})
,然后您可以将其用于其他任务。
是的,我正在尝试打开一个新的Powershell窗口
您真的要打开窗口还是只想运行后台(异步)作业?如果您只想进行后台工作,则应查看$global:result
。使用Start-Job
的问题之一是您将无法获得结果,但是可以使用PowerShell作业。如果您使用Start-Process
,则代码如下:
Start-Job
然后在代码中的其他地方,您可以通过这样做来接收工作结果
$Button4.Add_Click({$global:lvmjob = Start-Job { & 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' list vms}})