適用於您的 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 指令的主要類別(命名空間)。請注意,esxcli 指令與 ESXi 中使用的其他主控台指令一樣,會區分大小寫。執行以下指令後,將顯示所有可用的 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.