ESXi 是一个专用的、基于 Linux 的 hypervisor,其核心是一个名为 ESXi Shell 的命令行界面,掌握这些命令对于日常管理、故障排查和自动化至关重要。

如何进入 ESXi 命令行界面?
在执行任何命令之前,你需要先获得访问权限。
通过 vSphere Client (HTML5) 或 vSphere Web Client
这是最推荐、最安全的方式。
- 使用管理员账户登录 vSphere Client。
- 在左侧导航栏中,右键点击你的 ESXi 主机,选择 “服务” (Services)。
- 在服务列表中,找到 “ESXi Shell” 和 “SSH”。
- 启动 SSH 服务:点击 SSH 旁边的“开始”按钮,这会允许你通过 SSH 客户端(如 PuTTY, Xshell, MobaXterm)远程连接。
- 启动并连接 ESXi Shell:点击 ESXi Shell 旁边的“启动”按钮,然后点击“操作” -> “浏览控制台”,这会直接在浏览器中打开一个文本模式的终端。
安全建议:在完成管理工作后,请务必将 SSH 和 ESXi Shell 服务状态设置为“手动”,并在“策略”中取消勾选“在启动时加载”,以减少攻击面。
通过物理控制台
如果你无法通过网络访问,可以直接连接到服务器的物理键盘和显示器,登录后即可使用命令行。

ESXi 命令分类详解
ESXi 的命令可以分为以下几大类:
基础系统信息命令
这些命令用于快速了解系统状态。
| 命令 | 功能描述 | 示例 |
|---|---|---|
--version 或 -v |
显示 ESXi 的版本号和构建号。 | vmware -v |
uptime |
显示系统运行了多长时间以及负载情况。 | uptime |
hostname |
显示或设置系统的主机名。 | hostname |
date |
显示或设置系统日期和时间。 | date |
w |
显示当前登录的用户以及他们正在运行的进程。 | w |
网络配置命令
网络是虚拟化的基础,这些命令非常常用。
| 命令 | 功能描述 | 示例 |
|---|---|---|
esxcli network ip interface list |
(最常用) 列出所有网络接口(vSwitch, vmk, vNIC)。 | esxcli network ip interface list |
esxcli network ip interface ipv4 get -i <vmkX> |
获取指定接口(如 vmk0)的 IPv4 配置信息。 |
esxcli network ip interface ipv4 get -i vmk0 |
esxcli network ip interface ipv4 set -i <vmkX> -t <static/dhcp> -I <IP> -N <Mask> -G <Gateway> |
(最常用) 设置指定接口的 IPv4 地址。 | esxcli network ip interface ipv4 set -i vmk0 -t static -I 192.168.1.100 -N 255.255.255.0 -G 192.168.1.1 |
esxcli network vswitch standard list |
列出所有标准虚拟交换机。 | esxcli network vswitch standard list |
esxcli network vswitch standard portgroup list |
列出所有端口组。 | esxcli network vswitch standard portgroup list |
esxcli network firewall ruleset list |
列出所有防火墙规则集及其状态。 | esxcli network firewall ruleset list |
存储管理命令
管理数据存储、磁盘和路径。

| 命令 | 功能描述 | 示例 |
|---|---|---|
esxcli storage core adapter list |
列出所有存储适配器(HBA卡)。 | esxcli storage core adapter list |
esxcli storage core path list |
(故障排查常用) 列出所有存储路径及其状态。 | esxcli storage core path list |
esxcli storage nmp satp list |
列出所有 SATP(存储类型路径策略)。 | esxcli storage nmp satp list |
esxcli storage nmp psp list |
列出所有 PSP(路径选择策略)。 | esxcli storage nmp psp list |
esxcli storage vmfs extent list |
列出 VMFS 数据存储的所有 extent。 | esxcli storage vmfs extent list |
esxcli storage vmfs snapshot list -d < datastore_name > |
列出指定数据存储的快照信息。 | esxcli storage vmfs snapshot list -d datastore1 |
虚拟机管理命令
直接在 ESXi Shell 中管理虚拟机。
| 命令 | 功能描述 | 示例 |
|---|---|---|
vim-cmd vmsvc/getallvms |
(最常用) 列出所有注册在 ESXi 主机上的虚拟机及其 ID、路径、配置文件名等。 | vim-cmd vmsvc/getallvms |
vim-cmd vmsvc/power.getstate <VM_ID> |
获取指定 VM_ID 的虚拟机电源状态。 | vim-cmd vmsvc/power.getstate 2 |
vim-cmd vmsvc/power.on <VM_ID> |
开启指定 ID 的虚拟机。 | vim-cmd vmsvc/power.on 2 |
vim-cmd vmsvc/power.off <VM_ID> |
正常关闭指定 ID 的虚拟机。 | vim-cmd vmsvc/power.off 2 |
vim-cmd vmsvc/power.reset <VM_ID> |
强制重启指定 ID 的虚拟机(等同于断电再上电)。 | vim-cmd vmsvc/power.reset 2 |
vim-cmd vmsvc/snapshot.get <VM_ID> |
获取指定虚拟机的快照信息。 | vim-cmd vmsvc/snapshot.get 2 |
服务与进程管理
| 命令 | 功能描述 | 示例 |
|---|---|---|
services.sh |
管理 ESXi 服务的脚本。 | services.sh --status (查看所有服务状态) |
ps |
显示当前运行的进程。 | ps aux |
top |
实时显示系统进程和资源占用情况。 | top |
kill |
终止一个进程。 | kill -9 <PID> |
文件系统与日志管理
| 命令 | 功能描述 | 示例 |
|---|---|---|
ls |
列出目录内容。 | ls /vmfs/volumes/ |
cd |
切换目录。 | cd /var/log |
cat / less / more |
查看文件内容。 | less /var/log/hostd.log |
tail -f |
(故障排查常用) 实时查看日志文件的尾部内容。 | tail -f /var/log/messages |
find |
查找文件。 | find / -name "*.log" |
cp / mv / rm |
复制、移动、删除文件。 | cp /some/file /vmfs/volumes/datastore1/ |
mkdir |
创建目录。 | mkdir /vmfs/volumes/datastore1/new_folder |
用户与权限管理
| 命令 | 功能描述 | 示例 |
|---|---|---|
esxcli system account list |
列出所有本地用户账户。 | esxcli system account list |
esxcli system account add -i <username> -p <password> -c <operator> |
创建一个新的本地用户。 | esxcli system account add -i troubleshooter -p MyPassword123 -c operator |
esxcli system account delete -i <username> |
删除一个本地用户。 | esxcli system account delete -i troubleshooter |
硬件信息与诊断
| 命令 | 功能描述 | 示例 |
|---|---|---|
esxcli hardware platform get |
获取硬件平台信息(如 BIOS、iDRAC/iLO 版本)。 | esxcli hardware platform get |
esxcli hardware pci list |
列出所有 PCI 设备。 | esxcli hardware pci list |
esxcli hardware storage list |
列出所有存储设备。 | esxcli hardware storage list |
esxcli system maintenanceMode get |
检查主机是否处于维护模式。 | esxcli system maintenanceMode get |
esxcli system maintenanceMode set -e <true/false> |
进入或退出维护模式。 | esxcli system maintenanceMode set -e true |
实用技巧与示例
场景1:忘记 root 密码怎么办?
-
重启 ESXi 主机。
-
在出现
VMware Boot Loader时,立即按Shift+O键,进入引导选项编辑界面。 -
在光标处,输入
boot -s然后回车,这会以单用户模式启动。 -
系统会进行一系列硬件检测,最后进入 提示符。
-
执行以下命令重置密码:
# 进入单用户模式后,文件系统是只读的,需要先重新挂载为可读写 mount -o remount,rw / # 使用 passwd 命令重置 root 密码 passwd # 按提示输入新密码两次 # 重启主机 reboot -f
场景2:排查虚拟机卡顿,怀疑是存储问题
-
检查存储路径状态:
esxcli storage core path list
查看
State列,如果出现dead或unresolved,说明对应路径有问题。 -
查看存储适配器驱动和固件:
esxcli storage core adapter list
记下 Driver 和 Firmware 版本,去硬件厂商官网检查是否有更新。
-
查看系统日志:
tail -f /var/log/messages | grep -i "scsi"
查找与 SCSI 或存储相关的错误信息。
场景3:快速复制一个虚拟机
假设你想复制 VM1 到 VM2,并且它们都在 datastore1 上。
# 1. 关闭虚拟机 VM1 vim-cmd vmsvc/power.off <VM_ID_of_VM1> # 2. 复制虚拟机目录 cp -r /vmfs/volumes/datastore1/VM1 /vmfs/volumes/datastore1/VM2 # 3. 重命名或修改 VM2 的配置文件 # 进入 VM2 目录 cd /vmfs/volumes/datastore1/VM2 # 重命名 .vmx 文件 mv VM1.vmx VM2.vmx # 4. 编辑 VM2.vmx 文件,修改唯一标识符 vi VM2.vmx # 修改以下行,确保它们是唯一的: # displayName = "VM2" # nvram = "VM2.nvram" # ... 等等 # 5. 重新注册虚拟机 vim-cmd solo/registervm /vmfs/volumes/datastore1/VM2/VM2.vmx # 6. 启动虚拟机 VM2 # 首先通过 vim-cmd vmsvc/getallvms 找到新 VM 的 ID vim-cmd vmsvc/power.on <new_VM_ID>
重要提醒
- 安全第一:在生产环境中操作前,请务必在测试环境中验证你的命令,错误的命令可能导致服务中断或数据丢失。
- 善用
--help:几乎所有esxcli命令都支持--help参数,esxcli network ip interface --help,可以查看该命令的详细用法和子命令。 - 日志是你的朋友:当遇到问题时,
/var/log目录下的日志文件(如messages,hostd.log,fdm.log)是排查问题的最佳线索。 - 文档是基石:VMware 官方文档是最权威的信息来源,建议经常查阅。
