VMware vSphere PowerCLI เป็นชุดของโมดูล PowerShell เพื่อจัดการโครงสร้างพื้นฐาน VMware จากพรอมต์คำสั่ง คุณสามารถใช้ PowerCLI เพื่อรับสถานะของเครื่องเสมือน ที่เก็บข้อมูล เครือข่าย หรือผู้ใช้ จัดการการตั้งค่าต่างๆ สร้างอ็อบเจ็กต์ใหม่ และใช้ PowerShell ในงานอัตโนมัติสำหรับ ESXi, vCenter Server, vSphere, vSAN และผลิตภัณฑ์ VMware อื่นๆ
ปัจจุบัน VMware กำลังพัฒนาเวอร์ชัน PowerCLI สำหรับ PowerShell Core (7.0+) เท่านั้น PowerShell เวอร์ชันนี้เป็นแบบข้ามแพลตฟอร์มและอาจใช้ใน Windows, Linux หรือ macOS เฉพาะการแก้ไขด้านความปลอดภัยเท่านั้นที่เผยแพร่สำหรับโมดูล PowerCLI รุ่นก่อนหน้าสำหรับ Windows PowerShell 5.x ขอแนะนำให้ใช้เวอร์ชัน PowerShell Core ที่อัปเดต
จะติดตั้งโมดูล VMware PowerCLI บน Windows ได้อย่างไร
คุณสามารถติดตั้ง VMware PowerCLI ใน Windows ได้ทั้งแบบออนไลน์และออฟไลน์
ในการติดตั้ง PowerCLI จาก PowerShell Gallery ทางออนไลน์ ให้เรียกใช้คำสั่งด้านล่าง:
Install-Module -Name VMware.PowerCLI
หากคุณต้องการติดตั้งโมดูลสำหรับผู้ใช้ปัจจุบันเท่านั้น:
Install-Module VMware.PowerCLI -Scope CurrentUser
Find-Module -Name VMware.PowerCLI -AllVersions|select version
Install-Module -Name VMware.PowerCLI -RequiredVersion 12.4.0.17860403
ระหว่างการติดตั้ง คุณจะได้รับแจ้งให้อัปเดตผู้ให้บริการ NuGet ของคุณ ยืนยันการติดตั้งจากที่เก็บ PowerShell Gallery ที่ไม่น่าเชื่อถือด้วย คุณสามารถทำให้เป็นไฟล์ที่เชื่อถือได้โดยใช้ Set_PSRepository
cmdlet.
ตรวจสอบว่าโมดูล PowerCLI ได้รับการติดตั้งและแสดงเวอร์ชัน:
Get-Module -ListAvailable VMware* | Select Name,version
หากต้องการอัปเดตเวอร์ชันโมดูล PowerCLI ของคุณ เพียงเรียกใช้คำสั่ง:
Update-Module -Name VMware.PowerCLI
choco search vmware
และติดตั้ง:
choco install vmware-powercli-psmodule
โมดูล PowerCLI ยังไม่พร้อมใช้งานใน winget
หากคุณต้องการติดตั้ง PowerCLI บนคอมพิวเตอร์แบบแยกส่วน (สภาพแวดล้อมที่ไม่ได้เชื่อมต่อ) คุณสามารถใช้ตัวติดตั้งแบบออฟไลน์ได้
- ดาวน์โหลดไฟล์ ZIP ด้วยโมดูล PowerCLI https://code.vmware.com/web/tool/vmware-powercli (ขนาดของไฟล์ ZIP ที่มี VMware-PowerCLI 12.4.1 ปัจจุบันอยู่ที่ประมาณ 80 MB);
- แตกไฟล์เก็บถาวรไปยังไดเร็กทอรีด้วยโมดูล PowerShell บนคอมพิวเตอร์ (คุณสามารถรับรายการไดเร็กทอรีโมดูล PoSh ได้โดยใช้
$env:PSModulePath
). โดยปกติC:\Program Files\WindowsPowerShell\Modules
ถูกนำมาใช้ - เลิกบล็อกไฟล์ที่ดาวน์โหลดจากอินเทอร์เน็ต:
cd “c:\Program Files\WindowsPowerShell\Modules”
Get-ChildItem * -Recurse | Unblock-File - เปิดคอนโซล PowerShell และตรวจสอบให้แน่ใจว่าโมดูล PowerCLI พร้อมใช้งานในขณะนี้:
Get-Module -Name VMware.PowerCLI –ListAvailable
ในการนำเข้าโมดูล PowerCLI ไปยังเซสชัน PowerShell ISE หรือ Visual Studio Code ปัจจุบัน ให้เรียกใช้คำสั่งต่อไปนี้:
Import-Module VMware.VimAutomation.Core
คุณอาจเห็นข้อความแสดงข้อผิดพลาดนี้เมื่อโหลดโมดูล:
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.
จากนั้น คุณต้องกำหนดค่านโยบายการดำเนินการสคริปต์ PowerShell เพื่ออนุญาตให้ใช้โมดูลในเซสชันปัจจุบัน:
Set-ExecutionPolicy Unrestricted -Scope Process
คุณสามารถใช้โมดูล PowerCLI ที่ติดตั้งบนคอมพิวเตอร์ระยะไกลได้ ในการดำเนินการ ให้นำเข้าจากระยะไกลโดยใช้ PSRemoting:
$session = New-PSSession -ComputerName mun-svr01
นำเข้าโมดูล PowerCLI ไปยังคอมพิวเตอร์ของคุณ:
Import-Module -PSsession $session -Name VMware.VimAutomation.Core
อย่าลืมปิดเซสชั่นเมื่อเสร็จแล้ว:
Remove-PSSession $session
การติดตั้งโมดูล PowerCLI บน Linux
คุณสามารถติดตั้งและใช้งาน PowerCLI ทั้งใน Windows และ Linux ขั้นแรก ติดตั้ง PowerShell Core บนโฮสต์ Linux ของคุณ จากนั้นรันคำสั่งต่อไปนี้ในคอนโซลเพื่อติดตั้ง VMware PowerCLI:
pwsh
Install-Module -Name VMware.PowerCLI
นำเข้าโมดูลไปยังเซสชันของคุณ:
Import-Module VMware.PowerCLI
คำสั่ง PowerCLI พื้นฐานเพื่อจัดการ VMware vSphere และ VM
คุณสามารถรับรายการ cmdlets ในโมดูล PowerCLI ได้ดังนี้ (มีคำสั่งมากกว่า 2200 คำสั่ง):
Get-Command –Module *vmware*
หากต้องการปิดการแจ้งเตือน VMware Customer Experience Improvement Program (CEIP):
Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false
ในการเชื่อมต่อกับ vCenter Server หรือโฮสต์ ESXi:
Connect-VIServer <vCenter_or_ESXi_FQDN>
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.
หากต้องการละเว้นใบรับรองที่ลงนามเอง:
Set-PowerCLIConfiguration -Scope AllUsers -InvalidCertificateAction Warn
วิธีแสดงรายการเครื่องเสมือนที่ลงทะเบียนบนเซิร์ฟเวอร์ ESXi (หรือ vCenter):
Get–VM
วิธีแสดง VM ที่ปิดอยู่เท่านั้น:
Get-VM | Where {$_.Powerstate -ne “PoweredOn”} | Select Name, VMHost, NumCPU, MemoryMB, Version|Format-Table
ในการเริ่มเครื่องเสมือน:
Start-VM -VM MUNTestVM1
ในการรีสตาร์ท VM อย่างถูกต้อง (โดยใช้ตัวแทนเครื่องมือ VMware):
Restart-VMGuest -VM MunTestVM1 -Confirm:$False
ในการปิด VM:
Shutdown-VMGuest -VM MunTestVM1 -Confirm:$False
วิธีแสดงรายการสแน็ปช็อตสำหรับ VM:
Get-VM -VM MunTestVM1 | Get-Snapshot| Format-List
ในการย้าย VM ที่รันอยู่ไปยังโฮสต์อื่นโดยใช้ VMotion จะใช้คำสั่ง Move-VM ตัวอย่างเช่น คุณต้องการย้าย VM ทั้งหมดจาก mun-esxi1 ไปยัง mun-esxi2:
Get-VMHost mun-esxi1|Get-Vm| Move-VM –Destination (Get-VMHost mun-esxi2)
ในการสร้างเครื่องเสมือนใหม่ ให้ใช้ New-VM cmdlet:
New-VM –Name MunTestVM1 -VMHost mun-esxi1 –ResourcePool Production –DiskGB 20 –DiskStorageFormat Thin –Datastore MUN_MSA2000_Prod1
ใช้ Set-VM
cmdlet เพื่อเปลี่ยนการตั้งค่าเครื่องเสมือน
เมื่อใช้ PowerCLI cmdlets คุณสามารถโต้ตอบกับระบบปฏิบัติการแขกของเครื่องเสมือนของคุณได้ ต้องติดตั้ง VMware Tools ใน VM คุณสามารถอัปเดต VMware Tools ดังที่แสดงด้านล่าง:
Get-VMGuest MunTestVM1 | Update-Tools
เมื่อใช้ Invoke-VMS คุณสามารถเรียกใช้สคริปต์หรือโปรแกรมในระบบปฏิบัติการ Windows สำหรับผู้เยี่ยมชม:
$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "%tmp%\inforeport"'
Invoke-VMScript -ScriptText $script -VM MunTestVM1 -HostCredential $hostCred -GuestCredential $VMCred -ScriptType Bat
ในการคัดลอกไฟล์ไปยัง VM ทั้งหมด ให้รันคำสั่งนี้:Get-VM | Copy-VMGuestFile -Source C:\PS\get-size.ps1 -Destination C:\PS\ - LocalToGuest -GuestUser administrator -GuestPassword P@ssdr0w2
โมดูลประกอบด้วย cmdlets เพื่อจัดการคลัสเตอร์ ศูนย์ข้อมูล ที่เก็บข้อมูล และโฮสต์ ESXi:
Get-VMHost
Get-Datacenter
Get-Cluster
Get-Datastore
Get-VirtualPortGroup
วิธีแสดงรายการโฮสต์ ESXi ในคลัสเตอร์:
Get-Cluster munprod1 | Get-VMHost | sort name
ใส่โฮสต์ ESXi เฉพาะในโหมดการบำรุงรักษา:Set-VMhost -VMHost mun-esxi1 -State Maintenance
ในการเชื่อมต่อ iSCSI LUN กับโฮสต์ ESXi และสร้างที่เก็บข้อมูล VMFS:Get-ScsiLun -VmHost mun-esxi1 | ft
New-Datastore -Name 'mun_iscsi_datastore' -VMHost mun-esxi1 -Path naa.6000xxxxxxxxxxxxxxxx -Vmfs
สคริปต์ตัวอย่าง PowerCLI
มีตัวอย่างการใช้ PowerCLI เพื่อรับข้อมูลเกี่ยวกับรายการโครงสร้างพื้นฐาน VMware และดำเนินการบางอย่างบนเว็บไซต์โดยอัตโนมัติ คุณสามารถใช้ตัวอย่างจากบทความต่อไปนี้เพื่อเขียนสคริปต์ PowerCLI ของคุณเอง:
- กำลังตรวจสอบพื้นที่ว่างบนดิสก์บน VMFS Datastores
- จับคู่ดิสก์เสมือน VMware (ไฟล์ VMDK) และโวลุ่มไดรฟ์ Windows
- จะค้นหา VMware VM ด้วย IP หรือที่อยู่ MAC ได้อย่างไร
- กำหนดค่า SNMP บนโฮสต์ VMware ESXi
- จะบังคับรีสตาร์ท VMware ที่ติดค้างได้อย่างไร
- จะทำให้ Windows Updates ในเทมเพลต VMware เป็นอัตโนมัติได้อย่างไร
- การใส่ไดรเวอร์ลงในอิมเมจการติดตั้ง ESXi
- ต้องมีการแจ้งเตือนสถานะการรวม VMware VM
- กำลังอัปเกรดเวอร์ชันฮาร์ดแวร์ VM
vSphere PowerCLI เป็นเครื่องมือที่มีประสิทธิภาพในการจัดการและทำให้โครงสร้างพื้นฐาน VMware ของคุณเป็นแบบอัตโนมัติ PowerCLI มี cmdlets มากกว่า 2,000 รายการเพื่อจัดการโครงสร้างพื้นฐาน VMware บนคลาวด์และในสถานที่ (vSphere, vSAN, vRealize Operations Manager, vCloud Director, Site Recovery Manager, Horizon, NSX-T, VMware Cloud Services, VMware Cloud on AWS เป็นต้น)