Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

VMware PowerCLI: วิธีติดตั้งและจัดการ vSphere และ ESXi

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

VMware PowerCLI: วิธีติดตั้งและจัดการ vSphere และ ESXi

ระหว่างติดตั้งจะ Prompt ให้ Update NuGet Provider และยืนยันการติดตั้งจาก Untrusted PowerShell Gallery Repository สามารถทำให้ Trusted ได้ด้วย Cmdlet Set_PSRepository

ตรวจสอบว่า PowerCLI Modules ติดตั้งแล้วและแสดง Versions:

Get-Module -ListAvailable VMware* | Select Name,version

VMware PowerCLI: วิธีติดตั้งและจัดการ vSphere และ ESXi

เพื่อ 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:

  1. Download ZIP File PowerCLI Module https://code.vmware.com/web/tool/vmware-powercli (ขนาด ZIP ประมาณ 80 MB สำหรับ VMware-PowerCLI 12.4.1 ปัจจุบัน)
  2. Unzip Archive ไป Directory ของ PowerShell Modules บน Computer (ดู Module Directories ได้จาก $env:PSModulePath) ปกติใช้ C:\Program Files\WindowsPowerShell\Modules
  3. Unblock Files ที่ดาวน์โหลดจาก Internet:
    cd "c:\Program Files\WindowsPowerShell\Modules"
    Get-ChildItem * -Recurse | Unblock-File
  4. เปิด 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

VMware PowerCLI: วิธีติดตั้งและจัดการ vSphere และ ESXi

Import Module เข้า Session:

Import-Module VMware.PowerCLI

Basic PowerCLI Commands จัดการ VMware vSphere และ VMs

ดูรายการ Cmdlets ใน PowerCLI Modules (มีมากกว่า 2200 คำสั่ง):

Get-Command –Module *vmware*

VMware PowerCLI: วิธีติดตั้งและจัดการ vSphere และ ESXi

ปิด 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

VMware PowerCLI: วิธีติดตั้งและจัดการ vSphere และ ESXi

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, ฯลฯ)