適用於 VMware 環境的最實用 ESXCLI 指令
您可以使用 VMware 提供的圖形使用者介面 (GUI)"vSphere Client",以及基於網頁的"VMware vSphere Web/HTML5 Client",來管理 ESXi 主機和您的 VMware 環境。雖然大多數設定都可在 GUI 中進行,但有時您可能需要取得或變更某些未在 GUI 中顯示的資訊或設定。
此時,您需要使用命令列介面 (CLI) 或"主控台",藉此可設定所有設定,包括隱藏的設定。除了 Linux 與 ESXi 共通的傳統命令外,ESXi 還擁有專屬的 ESXCLI 命令。
這篇部落格文章採用目錄格式,列出實用的 ESXCLI 命令,這些命令屬於 ESXi 殼層命令的一部分。
如何開啟 ESXi 命令列主控台
預設情況下,ESXi 命令列介面(ESXi shell)對於本地端和遠端存取均處於停用狀態。這表示在啟用 ESXi 命令列介面或 SSH 存取之前,您無法執行 ESXi 命令列指令。VMware 基於安全考量實施此限制。
讓我們來看看在 ESXi 中啟用命令列介面的三種主要方法。
啟用透過預設 ESXi 介面存取主控台
此方法適用於您能夠實際存取 ESXi 主機(包括主機的螢幕和鍵盤)的情況。
- 在 ESXi 直接主控台使用者介面 (DCUI), 前往
Troubleshooting Options, 請前往Enable ESXi Shell以及Enable SSH字串,然後按下Enter以啟用每個選項。 - 啟用 ESXi 命令列介面後,請按下
Alt+F1以開啟正在執行 ESXi 的主機上的控制台。接著,您應輸入您的登入名稱和密碼(可使用 root使用者的憑證)。 - 您可以執行 ESXi 命令列指令。
- 若需返回 ESXi DCUI,請按下
Alt+F2. 該Enable SSH此選項可讓您透過 SSH 客戶端遠端開啟 ESXi 主控台。
使用 VMware Host Client 啟用對主控台的存取
- 開啟網頁瀏覽器,在網址列中輸入您的 ESXi 主機的 IP 位址,然後登入。
- 前往
Host>Actions>Services然後點擊Enable Secure Shell (SSH)啟用 SSH 存取,直至 ESXi 重新開機為止。同樣地,您可以在本地 ESXi 主機的
Services選單。前往Manage>Services. 右鍵點擊TSM-SSH服務。點擊Policy>Start and Stop with host以確保即使在 ESXi 重新啟動後,仍能啟用 SSH 存取。 - 現在,您可以透過 SSH 客戶端遠端連線至 ESXi 主控台。

透過 vCenter 和 VMware vSphere Client 啟用對主控台的存取
若您的 ESXi 主機由 vCenter Server 管理,則可使用此方法。
- 登入 VMware HTML5 vSphere Client 在網頁瀏覽器中。
- 前往
Hosts and Clusters並選擇您的 ESXi 主機。 - 請選擇
Configure分頁,開啟System>Services, 然後點擊SSH在服務清單中。 - 點擊
Start若要僅執行一次 SSH 伺服器,請按下Edit Startup Policy並選擇Start and Stop with host如果您希望長期啟用 SSH 伺服器。您也可以在Services選單。
啟用 SSH 存取後,您即可使用 SSH 客戶端遠端連線至 ESXi 主機,並執行 ESXCLI 指令。
透過 SSH 連線
若要透過 SSH 遠端連線至 ESXi 主控台,請在 Linux 主控台中執行以下操作。
- 執行類似以下的指令:
ssh 192.168.101.221或
ssh root@192.168.101.221哪裡 192.168.101.221 此處為本範例中使用的 ESXi 伺服器的 IP 位址。
- 您需要輸入 ESXi 使用者的使用者名稱和密碼(
root可用作 ESXi 上的預設管理員使用者)。
同樣地,您也可以透過命令列使用 SSH 從一個 ESXi 主機連線至另一個。
在 Windows 中,您可以使用 PuTTY:
- 開啟
PuTTY - 請輸入 ESXi 主機的 IP 位址和連接埠。
- 點擊
Open透過 SSH 連線至 ESXi 主機。
透過 SSH 連線至 ESXi 主機,並遠端執行 ESXCLI 指令,是最常用且最安全的做法。
如何在 Linux 上安裝 ESXCLI
另一種遠端執行 ESXCLI 指令的方法,是在 Linux 上安裝 ESXCLI。為此,必須先安裝 Python。以下是在 Linux 上安裝 ESXCLI 的主要步驟:
- 在對系統進行變更之前,請先備份您的 Linux 電腦。
- 從 VMware 網站
- 從已下載的檔案中提取內容
esxcli-8.0.0-22179150.tgz存檔(以 root 身分執行):tar zxf esxcli-8.0.0-22179150.tgz -C /opt/vmware - 請使用以下指令執行 ESXCLI 安裝程式:
python setup.py install - 嘗試連線至 ESXi 主機,並在 ESXCLI 中遠端執行指令:
esxcli --server ESXI_IP_address --help您會收到錯誤訊息,因為 ESXi 要求主機之間建立可信賴的關係:
Certificate error. Server SHA-256 thumbprint: 64:CC:E5:F8:A4:AA:F6:9B:58:55:78:B7:E3:B3:69:10:83:3B:22:3C:BB:17:3D:12:28:D1:CD:E9:48:7A:FF:AA (not trusted)
- 要解決此問題,請執行該指令,並指定使用者名稱、密碼以及前一個輸出訊息中顯示的拇指印:
esxcli --server 192.168.101.101 --username root --password 'your_password' --thumbprint 64:CC:E5:F8:A4:AA:F6:9B:58:55:78:B7:E3:B3:69:10:83:3B:22:3C:BB:17:3D:12:28:D1:CD:E9:48:7A:FF:AA --help
此外,您也可以嘗試在 Linux 電腦上安裝憑證。憑證儲存於 /etc/vmware/ssl/rui.crt 在 ESXi 主機上。
ESXCLI 指令概覽
ESXCLI 是 ESXi 殼層的一部分,是一個用於管理虛擬基礎架構(例如 ESXi 的硬體、網路、儲存等元件)並在低階層控制 ESXi 本身的命令列介面(CLI)框架。從技術層面來看,ESXCLI 是一個 Python 腳本(/bin/esxcli.py (在 ESXi 中)。所有 ESXCLI 指令都必須在 ESXi 命令列介面(控制台)中執行。一般來說, esxcli 是一項包含大量子命令(稱為命名空間)及其選項的命令。該 esxcli 在安裝 ESXi 後,該指令會立即出現,並與其他 ESXi 殼層指令一同提供。
執行以下指令後,即可找到 esxcli 的位置,並探索 ESXCLI 的功能:
which esxcli
ls -l /sbin/esxcli

如您透過檢查主控台輸出所見,ESXCLI 是一個以 Python 編寫的腳本,其位置為 /sbin/ 目錄。若要查看該腳本的內容,您可以使用內建的文字編輯器 vi.
基本上,ESXCLI 的語法如下:
esxcli [options] {namespace}+ {cmd} [cmd options]
因此,ESXCLI 由多個分支組成,這些分支代表 ESXCLI 指令的主要類別(命名空間)。請注意,與 ESXi 中使用的其他主控台指令類似,esxcli 指令會區分大小寫。執行以下指令後,將顯示所有可用 ESXCLI 命名空間與指令的完整清單:
esxcli esxcli command list
可用的 ESXCLI 指令清單取決於 ESXi 版本。可新增指令。
因此,ESXi 8.0 的主要 ESXCLI 命名空間清單如下:
device– 裝置管理員指令esxcli– 與 ESXCLI 本身相關的指令fcoe– 以太網光纖通道指令graphics– VMware 圖形指令hardware– 用於檢查硬體屬性及設定硬體的指令iscsi– VMware iSCSI 指令network– 此命名空間包含一系列用於管理一般主機網路設定(例如 ESXi 主機的 IP 位址、DNS 設定、防火牆)以及虛擬網路元件(例如 vSwitch、埠組等)的命令。nvme– 管理 VMware NVMe 驅動程式的擴充功能rdma– 用於管理遠端直接記憶體存取協定堆疊的指令sched– 用於設定排程及 VMkernel 系統屬性的指令software– 管理 ESXi 的軟體映像檔與套件storage– 用於管理儲存空間的指令system– 用於設定 VMkernel 系統屬性、核心系統及系統服務的指令vm– 可用於控制虛擬機器運作的某些指令vsan– VMware vSAN 指令
主要指令以表示相同動作的動詞形式呈現:
list– 顯示定義之命名空間中可用的物件清單(例如,esxcli hardware bootdevice list– 列出可用的開機裝置)get– 取得已定義設定或屬性的值(例如,esxcli hardware clock get– 檢查設定的時間)set– 手動設定必要的參數(例如,esxcli hardware clock set -y 2024 -s 00– 將年份設為 2024,並將秒數設為 00)load/unload– 載入/載出系統設定 (esxcli network firewall load– 載入防火牆模組及儲存於設定檔中的防火牆設定)
如果您無法記起與特定命名空間相關的某個 ESXCLI 指令,您可以輸入該指令,並在主機廂輸出中查看提示。
例如,輸入:
esxcli network 查看該指令的所有可用指令 網路 命名空間
,然後輸入:
esxcli network vm 要查看有關 vm 命名空間。

ESXCLI 日誌檔案的位置 /var/log/esxcli.log
若 ESXCLI 指令執行失敗,資料便會寫入此檔案。若 ESXCLI 指令執行成功,則不會向此日誌檔案寫入任何內容。
實用的 ESXCLI 指令
既然您已經熟悉了 ESXCLI 指令的基本運作原理,接下來讓我們來看看一些可在 VMware vSphere 中使用的實用指令具體範例。本文所探討的 ESXCLI 指令清單,已依對應於命名空間名稱的類別進行分類。
用於檢查 ESXi 硬體詳細資訊的指令
透過使用 hardware 命名空間中,您可以查看已安裝裝置的完整資訊。
- 若要檢視已安裝的 PCI 裝置,請執行以下 ESXCLI 指令:
esxcli hardware pci list | more - 檢查 ESXi 伺服器上安裝的記憶體容量:
esxcli hardware memory get
- 查看已安裝處理器的詳細資訊:
esxcli hardware cpu list
ESXCLI 系統指令
在本節中,您可以查看 system ESXCLI 命名空間。
- 請確認 ESXi 的確切版本和建置編號,包括已安裝的更新和修補程式數量:
esxcli system version get - 檢查 ESXi 伺服器的主機名稱:
esxcli system hostname get - 檢查 ESXi 的安裝時間:
esxcli system stats installtime get
- 檢查 SNMP 設定:
esxcli system snmp get - 將 ESXi 主機切換至維護模式:
esxcli system maintenanceMode set --enable yes - 退出維護模式:
esxcli system maintenanceMode set --enable no
將 ESXi 主機設為維護模式後,即可關閉或重新啟動該主機。
- 關閉 ESXi 主機:
esxcli system shutdown poweroff - 重新啟動主機的指令類似:
esxcli system shutdown reboot - 您也可以設定延遲時間,並撰寫主機重新啟動的原因,以便將其儲存到系統日誌中:
esxcli system shutdown reboot -d 60 -r "Installing patches"在此範例中,延遲時間為 60 秒。
另一項指令是用自訂的歡迎訊息取代標準的背景畫面,該畫面原本會顯示帶有陰影的非活躍主選單,其中 “ 系統會顯示提示訊息以及用於管理主機的 IP 位址。請注意,設定自訂歡迎訊息後,黑色螢幕上將僅顯示這則設定好的訊息。您可以輸入 “Press F2” 請手動操作,以免造成混淆。
- 當使用者未登入時,此自訂訊息可用於隱藏連接至 ESXi 主機的顯示器上有關該 ESXi 主機的資訊。
esxcli system welcomemsg set -m="Welcome to NAKIVO! Press F2" - 請確認歡迎訊息是否已設定:
esxcli system welcomemsg get
ESXCLI 網路指令
該 network namespace 是 ESXCLI 中最大的命名空間之一。讓我們來探索一些有助於診斷的命令。
- 檢查目前活躍的網路連線狀態:
esxcli network ip connection list
- 檢視已安裝的網路介面卡清單:
esxcli network nic list
- 顯示網路介面的相關資訊:
esxcli network ip interface list - 顯示伺服器上所有網路介面的 IP 位址相關資訊:
esxcli network ip interface ipv4 get - 顯示虛擬機器的網路資訊:
esxcli network vm list
- 檢視網域搜尋設定:
esxcli network ip dns search list - 查看網路設定中設定的 DNS 伺服器:
esxcli network ip dns server list - 清單 虛擬交換器 以及埠群:
esxcli network vswitch standard list - 顯示關於該
vmnic0網路介面:esxcli network nic stats get -n vmnic0 - 檢查防火牆狀態與規則設定:
esxcli network firewall getesxcli network firewall ruleset list註: 若未設定相反的規則,預設的防火牆政策是將流量拒收。
- 您可以暫時停用 ESXi 主機上的防火牆以進行疑難排解:
esxcli network firewall set --enabled false - 必須使用以下指令啟用防火牆:
esxcli network firewall set --enabled true
基於安全考量,建議您啟用 ESXi 防火牆。
該 network 該命名空間包含許多指令。本文僅探討其中最基礎且最常用的那些。 網路 今日部落格文章的這部分。雖然可以透過 ESXCLI 設定大量網路參數,但這需要冗長的操作指南,超出了本文的討論範圍。
ESXCLI 儲存指令
該 storage 此命名空間可讓您查看並編輯儲存設定。
- 查看已掛載 VMFS 卷的相關資訊:
esxcli storage vmfs extent list - 檢視 VMFS 檔案系統與磁碟裝置的對應關係:
esxcli storage filesystem list - 列出系統上的所有 iSCSI 路徑:
esxcli storage core path list - 顯示已掛載的 NFS 共用目錄清單:
esxcli storage nfs list
如何在 ESXCLI 中檢查 SMART
S.M.A.R.T. 對於硬碟診斷及預防硬碟故障非常有用。您可以讀取 S.M.A.R.T. 資料,若發現硬碟出現異常,便可及時決定更換硬碟。
- 首先,列出所有儲存裝置,並找出其唯一裝置名稱(請參閱下圖:位置):
esxcli storage core device list - 接著使用該指令取得該磁碟裝置的 S.M.A.R.T. 資料:
esxcli storage core device smart get -d naa.50026b7267020435哪裡
naa.50026b7267020435是本範例中使用的裝置名稱。
查看 iSCSI 適配器清單
iSCSI 是一種廣泛用於在區塊層級存取共用儲存空間的協定,此外還有另一種 iscsi ESXCLI 中用於管理 iSCSI 儲存的命名空間。
- 顯示可用的 iSCSI 適配器清單:
esxcli iscsi adapter list - 重新偵測並重新掃描 iSCSI 介面卡:
esxcli iscsi adapter discovery rediscover -A adapter_nameesxcli storage core adapter rescan -A adapter_name
與其 -A adapter_name 您可以使用 --all 選項。

檢查 ESXi 軟體 VIB 清單
專為 ESXi 設計的軟體套件通常以 VIB 檔案(vSphere 安裝套件)的形式發行。 VIB 檔案類似於一個包含壓縮套件的容器,這些套件可安裝於系統中,並附帶描述檔與簽章檔。而 VIB 通常以標準 ZIP 格式的壓縮檔形式發行。您可能需要將 VIB 納入 ESXi 映像檔中,以便使用相應的硬體;或者在現有系統中安裝 VIB,以套用安全性修補程式。
- 您可以查看 ESXi 主機上已安裝的 VIB 套件清單:
esxcli software vib list - 您可以使用 ESXCLI 安裝 VIB(ESXi 主機必須處於維護模式):
esxcli software vib install -d /vmfs/volumes/datastore1/patches/patch_name.zip
在 ESXCLI 中管理虛擬機器運作
該 vm 此命名空間可用於對正在運行的虛擬機器程序執行操作。
- 查看正在運行的虛擬機器清單並顯示其 World ID:
esxcli vm process list
您可以透過 ESXi 命令列指令強制關閉無回應的虛擬機器。當無法透過圖形介面(例如 VMware vSphere Client、VMware Host Client 或 VMware 工作站的介面)關閉虛擬機器時,此時使用 ESXCLI 將能派上用場。
- 請使用在
esxcli vm process list指令。在目前的範例中,所需虛擬機器的 World ID 為 75498。esxcli vm process kill -w 75498 -t soft - 如果"軟關機"指令無效,請考慮使用"硬關機"方法立即關閉虛擬機器。
esxcli vm process kill -w 75498 -t hard
此功能提供三種可用的指令選項: kill 指令:
soft– 在客體作業系統中發出正確的訊號,以正確地關閉虛擬機器hard– 虛擬機器將立即關閉force– 關閉虛擬機器的方式,類似於拔除電源線時關閉電腦的方式。僅在前兩種關閉方式均未成功時,才應使用此種方式關閉虛擬機器。
您也可以觀看這段影片,了解 VMware 環境中最實用的指令:
其他有用的 ESXi Shell 指令
除了 ESXCLI 指令外,您還可以使用許多 ESXi 殼層指令:
- 從主機介面開啟 ESXi DCUI(若透過 SSH 連線至 ESXi 命令列介面,顏色會有所不同):
dcui
新聞
Ctrl+C返回命令提示字元。 - 使用以下方式將厚配置虛擬磁碟轉換為薄配置虛擬磁碟
vmkfstools:vmkfstools -i /vmfs/volumes/vmfs_datastore/vm_name/thick_disk.vmdk -d thin /vmfs/volumes/vmfs_datastore/vm_name/new_thin_disk_name.vmdk在 ESXi 殼層指令中,
vmkfstools這是一項強大的指令,可用於執行儲存操作,以及管理儲存裝置、VMFS 卷宗和虛擬磁碟。如需進一步了解厚式與薄式配置,以及虛擬磁碟縮小功能,請參閱 部落格文章. - 開啟 ESXi 工作管理員:
esxtop在透過
esxtop使用此指令後,您可以透過按下對應的鍵來在分頁之間切換:C - CPUI – interruptM – memoryN – networkD – disk adapterU – disk deviceV – disk VMP – power management - 在當前目錄中尋找該檔案:
find . -name filename.txt - 將
.輸入您要尋找檔案的位置,並將filename.txt並輸入您的檔案名稱。例如,如果您想尋找一個diskname.vmdk檔案位於/vmfs/volumes/目錄中,執行以下指令:find /vmfs/volumes/ -name diskname.vmdk - 開啟互動式 VMware 主控台:
vsish - 顯示已載入的 vmkernel 驅動程式:
vmkload_mod --list - 檢查交換分區的設定:
esxcli sched swap system get - 您可以使用以下其中一個指令來列出使用者:
esxcli system account listcat /etc/passwd or less/etc/passwd
- 您可以在ESXi命令的位置查看所有命令
sbin目錄:ls /usr/sbin
建立新使用者
透過 ESXi 命令列指令建立新的 ESXi 使用者,至少有兩種方法。
ESXi 的 adduser 指令
- 如果您輸入
adduser在 ESXi 控制台中執行此指令時,您將看到以下訊息:-sh: adduser: not found - 您應指定執行此命令所需的 BusyBox 二進位檔完整路徑:
/usr/lib/vmware/busybox/bin/busybox adduser現在您可以查看此命令的使用選項。
- 最後,執行以下確切指令以新增 ESXi 系統使用者:
/usr/lib/vmware/busybox/bin/busybox adduser -s /bin/sh -G root -h / user1地點:
-s /bin/sh是一個在使用者登入後使用的殼層;-G root– 該新用戶所屬的群組名稱(根群組);-h /是新使用者的家目錄(根目錄);user1是使用者名稱。 - 系統提示時,請輸入新密碼並再次輸入以確認。

在 ESXCLI 中建立使用者
此外,您也可以透過 ESXCLI,僅需一項指令即可新增使用者:
esxcli system account add -d="NAKIVO user" -i="nakivo" -p="Password-Test321" -c="Password-Test321"
地點:
-d 意指顯示的描述
-p 是否已為新使用者設定密碼
-c 密碼確認是否為
在命令列中建立新使用者時,該選擇哪種方法?第二種方法中使用的單一指令看似方便,但在安全性方面卻未必如此。如果您還記得,登入 ESXi 殼層後隨即顯示了一則警告訊息:
所有在 ESXi 命令列介面上執行的指令都會被記錄,並可能包含在支援服務包中。請勿直接在命令列上提供密碼。大多數工具都會提示輸入機密資訊,或接受來自標準輸入的機密資訊.
若您重視安全性,請勿在命令中直接以明文形式輸入密碼。若需輸入密碼,系統通常會提示您,此時可透過標準主控台輸入欄位進行輸入。例如,若您想使用 ESXCLI 建立新使用者,請使用類似以下的命令:
esxcli system account add -d="user2" -i="user2" -p -c
一個 ESXi 密碼 系統將另行提示輸入密碼,且在輸入密碼時不會在控制台顯示。

結論
VMware 提供了一系列主控台指令,用於管理系統元件、網路、儲存裝置、VIB 軟體以及虛擬機器。除了 VMware vSphere Client 和 VMware Host Client 提供的直觀圖形使用者介面外,透過 ESXi 的命令列介面還能讓您擁有更強大的控制能力。
您可透過本地端的 ESXi 殼層指令,或遠端透過 ESXi SSH 指令,檢視並設定那些在 GUI 中隱藏或無法存取的設定。 請使用本部落格文章中提供的 ESXi 命令清單來進行細部調校,並體驗在 VMware vSphere 中使用命令列介面的額外功能。
您可透過閱讀相關內容來進一步了解 PowerCLI,這是另一種用於在 Windows 系統上管理 VMware vSphere 的命令列介面 PowerShell.