在VMware环境中,通过命令行启动虚拟机是自动化管理和批量操作的重要手段,尤其适用于服务器运维或需要频繁部署虚拟机的场景,VMware提供了多种命令行工具,如VMware CLI(适用于ESXi 5.0及之前版本)、PowerCLI(基于.NET的PowerShell模块,适用于vSphere)以及ESXi Shell(直接在宿主机上操作),以下是不同工具下启动虚拟机的详细操作方法及注意事项。

使用PowerCLI启动虚拟机(推荐)
PowerCLI是VMware官方推荐的命令行管理工具,功能强大且支持批量操作,首先需安装PowerCLI模块(通过Install-Module VMware.PowerShell命令),然后连接到vCenter Server或ESXi主机:
Connect-VIServer -Server <vCenter_IP> -User <username> -Password <password>
启动单个虚拟机:
Start-VM -VM <虚拟机名称或ID>
批量启动虚拟机(通过名称匹配或导入列表):
# 方法1:通配符匹配
Start-VM -VM "WebServer*"
# 方法2:从文本文件导入虚拟机列表
$vmList = Get-Content "C:\vmlist.txt"
$vmList | ForEach-Object { Start-VM -VM $_ }
启动过程中可通过Get-Task命令查看任务状态,

Get-Task | Where-Object {$_.Name -eq "StartVM" -and $_.State -eq "Running"}
使用ESXi Shell直接启动
对于直接连接到ESXi宿主机的情况,可通过SSH登录ESXi Shell,使用vmware-cmd命令启动虚拟机,首先需确认虚拟机配置文件路径(通常位于/vmfs/volumes/datastore_name/VM_name/VM_name.vmx),然后执行:
vmware-cmd /vmfs/volumes/datastore_name/VM_name/VM_name.vmx start hard
参数说明:
start:启动虚拟机hard:强制启动(相当于电源键强制开机),若需正常启动则用soft- 若需后台运行,可添加参数
background
批量启动时,可结合for循环或脚本实现,
for vm in /vmfs/volumes/datastore_name/*/VM_name.vmx; do vmware-cmd "$vm" start hard done
使用VMware CLI(旧版工具)
对于较老的ESXi版本(5.0及之前),可使用VMware CLI工具,需先下载并安装vCLI包,通过vicfg-host或vicfg-vm命令管理虚拟机,启动命令示例:

vicfg-vm -s <虚拟机名称> -H <ESXi_IP> -o start
但需注意,该工具已逐渐被PowerCLI取代,新版本环境中不推荐使用。
常见启动问题及排查
- 虚拟机文件锁定:若虚拟机已被其他进程锁定(如快照操作),启动会失败,可通过
esxcli storage file list命令检查文件锁定状态。 - 资源不足:若集群或主机资源不足,启动可能被挂起,需检查资源分配情况,或调整虚拟机资源设置。
- 网络配置错误:若虚拟机使用NAT或仅主机模式,需确保网络适配器配置正确,可通过
esxcli network ip interface list查看网络接口状态。
以下是不同启动方式的命令对比表格:
| 工具名称 | 适用场景 | 命令示例 | 特点 |
|---|---|---|---|
| PowerCLI | vCenter环境,批量操作 | Start-VM -VM "VM1" |
功能全面,支持复杂脚本和管道操作 |
| ESXi Shell | 单台ESXi主机,快速操作 | vmware-cmd /path/to/vmx start hard |
无需额外安装,适合轻量级任务 |
| VMware CLI | 旧版ESXi(5.0及之前) | vicfg-vm -s VM1 -H ESXi_IP -o start |
已淘汰,仅兼容老环境 |
相关问答FAQs
Q1:如何通过命令行设置虚拟机开机自启动?
A:在PowerCLI中,使用Set-VM -VM <虚拟机名称> -AutoStartEnabled $true命令设置开机自启动,还可通过Set-VM -AutoStartPolicy参数定义启动优先级和延迟时间,
Set-VM -VM "VM1" -AutoStartPolicy Enabled -StartAction "PowerOn" -StartDelay 60
在ESXi Shell中,需编辑虚拟机配置文件(.vmx),添加bios.bootOrder = "hdd"并重启ESXi主机。
Q2:命令行启动虚拟机失败,提示“无法访问虚拟机配置文件”如何解决?
A:该问题通常由权限不足或文件路径错误导致,可按以下步骤排查:
- 确认当前用户是否有操作权限(PowerCLI中需使用管理员账户,ESXi Shell需root权限);
- 检查虚拟机.vmx文件路径是否正确,可通过
ls -l /vmfs/volumes/datastore_name/列出所有虚拟机目录; - 若文件被锁定,尝试在vSphere客户端中关闭虚拟机电源或取消挂起状态,或使用
esxcli storage file lock list查看锁定进程并终止。
