使用OVFtool将VMX转换为OVF

Adi*_*i S 7 vmware-tools ovf

我试图使用OVFTool将VMX转换为OVF格式,如下所示,但是它给出了错误:

C:\Program Files\VMware\VMware OVF Tool>ovftool.exe
vi://vcenter.com:port/folder/myfolder/abc.vmx abc.ovf
Error: Failed to open file: https://vcenter.com:port/folder/myfolder/abc.vmx
Completed with errors
Run Code Online (Sandbox Code Playgroud)

如果您有任何解决方案,请告诉我.

Vla*_*tow 5

我有一个类似的问题,OVFTool尝试导出到OVF格式.

Export failed: Failed to open file: C:\Virtual\test\test.vmx.
Run Code Online (Sandbox Code Playgroud)

首先,我在编辑器中打开.VMX文件(它是一个文本文件),并确保设置如

scsi0:0.fileName = "test.vmdk"
nvram = "test.nvram"
extendedConfigFile = "test.vmxf"
Run Code Online (Sandbox Code Playgroud)

提到正确的文件名.然后我注意到这一行:

.encoding = "windows-1251"
Run Code Online (Sandbox Code Playgroud)

这是西里尔语代码页,所以我将其修改为使用西方代码页

.encoding = "windows-1252"
Run Code Online (Sandbox Code Playgroud)

然后,运行OVFTool会产生不同的错误

Export failed: Failed to open disk: test.vmdk.
Run Code Online (Sandbox Code Playgroud)

要修复它,我必须在HEX编辑器中打开.VMDK文件(因为它通常是一个大的二进制文件),在那里找到了字符串

encoding = "windows-1251"
Run Code Online (Sandbox Code Playgroud)

(它位于文件开头的某个地方),并将"1251"替换为"1252".

它成功了!

  • 我有类似的情况,但在我的情况下,编码已经是windows-1252.我发现改为UTF-8对我来说是个窍门. (2认同)

小智 5

我在vmware融合中有类似的情况试图使用可能在Windows上创建的.vmx.我可以启动虚拟机,但任何尝试使用ovftool导出计算机或使用vmware-vdiskmanager进行轰炸:

Error: Failed to open disk: source.vmdk
Completed with errors
Run Code Online (Sandbox Code Playgroud)

diskname完全有效,路径有效,权限有效,唯一的线索是运行ovftool:

ovftool --X:logToConsole --X:logLevel=verbose source.vmx dest.ova

Opening VMX source: source.vmx
verbose -[10C2513C0] Opening source
verbose -[10C2513C0] Failed to open disk: ./source.vmdk
verbose -[10C2513C0] Exception: Failed to open disk: source.vmdk. Reason: Disk encoding error
Error: Failed to open disk: source.vmdk
Run Code Online (Sandbox Code Playgroud)

正如其他人所说,我看了一下.vmdk.其中我发现了3条其他线索:

encoding="windows-1252"
createType="monolithicSparse"
# Extent description
RW 16777216 SPARSE "source.vmdk"
Run Code Online (Sandbox Code Playgroud)

所以首先我将monolithicSparse vmdk转换为"预先分配的2GB文件中的虚拟磁盘":

vmware-vdiskmanager -r source.vmdk -t3 foo.vmdk
Run Code Online (Sandbox Code Playgroud)

然后我可以编辑"foo.vmdk"来改变编码,现在看起来像:

encoding="utf-8"
createType="twoGbMaxExtentFlat"
# Extent description
RW 8323072 FLAT "foo-f001.vmdk" 0
RW 8323072 FLAT "foo-f002.vmdk" 0
RW 131072 FLAT "foo-f003.vmdk" 0
Run Code Online (Sandbox Code Playgroud)

最后,在修复source.vmx之后:

scsi0:0.fileName = "foo.vmdk"
Run Code Online (Sandbox Code Playgroud)

利润:

ovftool source.vmx dest.ova
...
Opening VMX source: source.vmx
Opening OVA target: dest.ova
Writing OVA package: dest.ova
Transfer Completed
Completed successfully
Run Code Online (Sandbox Code Playgroud)