我需要找到一种方法来以编程方式确定来宾虚拟机磁盘是 GPT 还是 MBR 分区。我无法使用 vijava 或 Vddk api 来实现这一点。是否有任何其他 c++ 或 java 库可以帮助我实现这一目标。或者手动解析 MBR 是唯一可用的解决方案。
提前致谢,
蒂亚加拉詹 A.
您需要使用安装在客人上的 VMWare 工具并在客人内运行命令。本文说明了如何使用 vijava: http: //www.doublecloud.org/2012/02/run-program-in-guest-operating-system-on-vmware/
如果您使用 Windows,我推荐 PowerCLI + Invoke-VmScript
cmdlet( https://www.vmware.com/support/developer/PowerCLI/PowerCLI501/html/Invoke-VMScript.html )
它将允许您运行 powershell 命令(对于 windows 框)来确定分区布局。$True
如果检测到 GPT 分区,将返回以下行。
$disks = gwmi -query "Select * from Win32_DiskPartition"
foreach($disk in $disks) {
if ($disk.Type.StartsWith("GPT")){
return $true
}
}
同样,在 linux 客户机上,这样的东西会达到预期的效果:
fdisk -l | grep -i gpt > /dev/null ; echo $?
如果 GPT 分区退出,上述命令将返回 0,因为您应该会收到一条警告“警告:GPT(GUID 分区表)在 .. 上检测到。”这grep -i gpt
将启动。