VMware vSphere PowerCLI คือชุด PowerShell Modules สำหรับจัดการ VMware Infrastructure จาก Command Prompt สามารถใช้ PowerCLI ดูสถานะ VMs, Datastores, Networks, Users จัดการ Settings ต่างๆ สร้าง Objects ใหม่ และใช้ PowerShell ใน Automation Tasks สำหรับ ESXi, vCenter Server, vSphere, vSAN และ VMware Products อื่นๆ
ปัจจุบัน VMware พัฒนา PowerCLI Version สำหรับ PowerShell Core (7.0+) เท่านั้น PowerShell Version นี้ Cross-platform ใช้ได้ใน Windows, Linux, หรือ macOS มีเฉพาะ Security Fixes สำหรับ PowerCLI Modules เก่าสำหรับ Windows PowerShell 5.x แนะนำให้ใช้ PowerShell Core Version ที่อัปเดตแล้ว
วิธีติดตั้ง VMware PowerCLI Module บน Windows
ติดตั้ง VMware PowerCLI ใน Windows ได้ทั้ง Online และ Offline
ติดตั้ง PowerCLI จาก PowerShell Gallery Online รันคำสั่ง:
Install-Module -Name VMware.PowerCLI
PowerCLI vSphere Version 6.5 หรือก่อน แจกจ่ายเป็น MSI Installer
หากต้องการติดตั้ง Module สำหรับ Current User เท่านั้น:
Install-Module VMware.PowerCLI -Scope CurrentUser
โดยค่าเริ่มต้นจะติดตั้ง Latest PowerCLI Version จาก PowerShell Gallery หากต้องการ Version เฉพาะ แสดงรายการ Versions ทั้งหมดและติดตั้งที่ต้องการ:
Find-Module -Name VMware.PowerCLI -AllVersions|select version
Install-Module -Name VMware.PowerCLI -RequiredVersion 12.4.0.17860403

ระหว่างติดตั้งจะ Prompt ให้ Update NuGet Provider และยืนยันการติดตั้งจาก Untrusted PowerShell Gallery Repository สามารถทำให้ Trusted ได้ด้วย Cmdlet Set_PSRepository
ตรวจสอบว่า PowerCLI Modules ติดตั้งแล้วและแสดง Versions:
Get-Module -ListAvailable VMware* | Select Name,version

เพื่อ Update PowerCLI Module Version รัน:
Update-Module -Name VMware.PowerCLI
หากมี Choco Package Management Module ติดตั้งใน Windows หา PowerCLI Module ใน Repository:
choco search vmware
และติดตั้ง:
choco install vmware-powercli-psmodule
PowerCLI Module ยังไม่มีใน winget
หากต้องการติดตั้ง PowerCLI บน Isolated Computer (Disconnected Environment) ใช้ Offline Installer:
- Download ZIP File PowerCLI Module https://code.vmware.com/web/tool/vmware-powercli (ขนาด ZIP ประมาณ 80 MB สำหรับ VMware-PowerCLI 12.4.1 ปัจจุบัน)
- Unzip Archive ไป Directory ของ PowerShell Modules บน Computer (ดู Module Directories ได้จาก
$env:PSModulePath) ปกติใช้C:\Program Files\WindowsPowerShell\Modules - Unblock Files ที่ดาวน์โหลดจาก Internet:
cd "c:\Program Files\WindowsPowerShell\Modules"
Get-ChildItem * -Recurse | Unblock-File - เปิด PowerShell Console ตรวจสอบว่า PowerCLI Module พร้อมใช้งาน:
Get-Module -Name VMware.PowerCLI –ListAvailable
อ่านเพิ่มเติมเกี่ยวกับ Offline Installation ของ PowerShell Modules
เพื่อ Import PowerCLI Module เข้า PowerShell ISE หรือ Visual Studio Code Session ปัจจุบัน รัน:
Import-Module VMware.VimAutomation.Core
อาจเจอ Error Message เวลา Load Module:
Import-Module: File C:\Program Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\12.4.0.18627054\VMware.VimAutomation.Sdk.psm1 cannot be loaded because running scripts is disabled on this system.
ต้อง Config PowerShell Script Execution Policy เพื่ออนุญาตใช้ Module ใน Current Session:
Set-ExecutionPolicy Unrestricted -Scope Process
สามารถใช้ PowerCLI Module ที่ติดตั้งบน Remote Computer ได้ Import มา Remote ผ่าน PSRemoting:
$session = New-PSSession -ComputerName mun-svr01
Import-Module -PSsession $session -Name VMware.VimAutomation.Core
Remove-PSSession $session
การติดตั้ง PowerCLI Module บน Linux
ติดตั้งและใช้ PowerCLI ได้ทั้ง Windows และ Linux ขั้นแรกติดตั้ง PowerShell Core บน Linux Host จากนั้นรันคำสั่งใน Console:
pwsh
Install-Module -Name VMware.PowerCLI

Import Module เข้า Session:
Import-Module VMware.PowerCLI
Basic PowerCLI Commands จัดการ VMware vSphere และ VMs
ดูรายการ Cmdlets ใน PowerCLI Modules (มีมากกว่า 2200 คำสั่ง):
Get-Command –Module *vmware*

ปิด VMware Customer Experience Improvement Program (CEIP) Notification:
Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false
เชื่อมต่อ vCenter Server หรือ ESXi Host:
Connect-VIServer <vCenter_or_ESXi_FQDN>
หากใช้ Self-signed SSL Certificate สำหรับ vCenter Server PowerCLI จะ Block Connection:
Connect-VIServer Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction option to Prompt if you'd like to connect once or to add a permanent exception for this server. Additional Information: Could not establish trust relationship for the SSL/TLS secure channel with authority.
เพื่อ Ignore Self-signed Certificates:
Set-PowerCLIConfiguration -Scope AllUsers -InvalidCertificateAction Warn
แสดงรายชื่อ VMs ที่ลงทะเบียนบน ESXi (หรือ vCenter) Server:
Get–VM
แสดง Powered-off VMs เท่านั้น:
Get-VM | Where {$_.Powerstate -ne "PoweredOn"} | Select Name, VMHost, NumCPU, MemoryMB, Version|Format-Table

Start VM:
Start-VM -VM MUNTestVM1
Restart VM ให้ถูกต้อง (ใช้ VMware Tools Agent):
Restart-VMGuest -VM MunTestVM1 -Confirm:$False
Shutdown VM:
Shutdown-VMGuest -VM MunTestVM1 -Confirm:$False
แสดงรายการ Snapshots ของ VM:
Get-VM -VM MunTestVM1 | Get-Snapshot| Format-List
Move Running VM ไป Host อื่นด้วย vMotion ใช้ Command Move-VM เช่นย้าย VMs ทั้งหมดจาก mun-esxi1 ไป mun-esxi2:
Get-VMHost mun-esxi1|Get-Vm| Move-VM –Destination (Get-VMHost mun-esxi2)
สร้าง VM ใหม่ ใช้ Cmdlet New-VM:
New-VM –Name MunTestVM1 -VMHost mun-esxi1 –ResourcePool Production –DiskGB 20 –DiskStorageFormat Thin –Datastore MUN_MSA2000_Prod1
ใช้ Cmdlet Set-VM เพื่อเปลี่ยน VM Settings
ใช้ PowerCLI Cmdlets 互动กับ Guest OS ของ VMs ได้ ต้องติดตั้ง VMware Tools ใน VM สามารถ Update VMware Tools ได้:
Get-VMGuest MunTestVM1 | Update-Tools
ใช้ Invoke-VMScript รัน Script หรือ Program ใน Guest Windows OS:
$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "%tmp%\inforeport"'
Invoke-VMScript -ScriptText $script -VM MunTestVM1 -HostCredential $hostCred -GuestCredential $VMCred -ScriptType Bat
Copy File ไปทุก VMs:
Get-VM | Copy-VMGuestFile -Source C:\PS\get-size.ps1 -Destination C:\PS\ -LocalToGuest -GuestUser administrator -GuestPassword P@ssdr0w2
Module มี Cmdlets จัดการ Clusters, Datacenters, Datastores, ESXi Hosts:
Get-VMHost
Get-Datacenter
Get-Cluster
Get-Datastore
Get-VirtualPortGroup
แสดงรายชื่อ ESXi Hosts ใน Cluster:
Get-Cluster munprod1 | Get-VMHost | sort name
วาง ESXi Host เฉพาะตัวเข้า Maintenance Mode:
Set-VMhost -VMHost mun-esxi1 -State Maintenance
เชื่อม iSCSI LUN กับ ESXi Host และสร้าง VMFS Datastore:
Get-ScsiLun -VmHost mun-esxi1 | ft
New-Datastore -Name 'mun_iscsi_datastore' -VMHost mun-esxi1 -Path naa.6000xxxxxxxxxxxxxxxx -Vmfs
Tip. PowerCLI ทำงานใน Read-only Mode กับ Free VMware vSphere Hypervisor หมายถึงใช้ Commands ดู Settings ได้ แต่เปลี่ยนไม่ได้
PowerCLI Example Scripts
มีตัวอย่างการใช้ PowerCLI ดูข้อมูล VMware Infrastructure Items และ Automate Actions บน Website สามารถใช้ตัวอย่างจากบทความต่อไปนี้เขียน PowerCLI Scripts เอง:
- Checking Free Disk Space on VMFS Datastores
- Map VMware Virtual Disks (VMDK Files) and Windows Drive Volumes
- How to Find VMware VMs by IP or MAC Address?
- Configure SNMP on VMware ESXi Hosts
- How to Force Restart a Stuck VMware VM?
- How to Automate Windows Updates in VMware Templates?
- Injecting Drivers into the ESXi Installation Image
- VMware VM Consolidation Needed Status Alarm
- Upgrading VM Hardware Version
vSphere PowerCLI เป็น Tool อันทรงพลังสำหรับจัดการและ Automate VMware Infrastructure PowerCLI รวม Cmdlets มากกว่า 2000 สำหรับจัดการ Cloud และ On-premises VMware Infrastructure (vSphere, vSAN, vRealize Operations Manager, vCloud Director, Site Recovery Manager, Horizon, NSX-T, VMware Cloud Services, VMware Cloud on AWS, ฯลฯ)