VMware PowerCLI hay gọi tắt là PowerCLI là công cụ giúp quản trị viên sử dụng dòng lệnh trên môi trường windows để quản lý nhằm tự động hóa hạ tầng Vmware. Nếu bạn cảm thấy giao diện UI nhàm chán rồi hoặc muốn khai thác khả năng tự động hóa thì thử cài PowerCLI theo hướng dẫn này nhé. PowerCLI có thể tương tác với toàn bộ các cấu phần trong bộ sản phẩm của vmware như: vCenter, ESXi, vSAN, NSX …
Dùng PowerCLI thì làm được gì:
- Thay đổi các tương tác GUI như thường gặp với VMware.
- Cung cấp công cụ để tự động hóa các việc lặp đi lặp lại mà sysadmin hay gặp với VMware: Tạo, sửa, xóa, theo dõi, kiểm tra log và nhiều thứ kỳ diệu khác.
- Kích thích khả năng khám phá của bản thân.
- Nâng cao kỹ năng tìm hiểu, học tập của cá nhân.
Mô hình
Mô hình triển khai PowerCLI rất đơn giản, bạn chỉ cần các điều kiện sau:
- Máy laptop hoặc desktop hoặc máy ảo với hệ điều hành là Windows 10 (update bản mới nhất).
- Máy windows 10 có khả năng kết nối internet để lấy gói về.
- Cùng dải mạng quản trị của hạ tầng vSphere.
- Có các tài khoản quản trị cần thiết của hạ tầng Vmware.

Trong mô hình trên, HCĐ sẽ cài hướng dẫn cài đặt PowerCLI trên máy laptop, sử dụng Windows 10 Enterprise 64 bit.
Cài đặt PowerCLI
Bước 1: Tạo thư mục chứa các module của PowerCLI
Login vào máy windows 10 và tạo thư mục chứa các module của PowerCLI sẽ sử dụng. Trong hướng dẫn này tạo thư mục C:\Temp\PowerCLI

Bước 2: Mở PowerShell trong windows 10 với quyền administrator.

Ta có màn hình PowerShell như bên dưới.

Bước 3: Phân quyền thực thi từ xa
Thực hiện lệnh Set-ExecutionPolicy RemoteSigned
, chọn A
khi được hỏi.
Sau đó cài đặt Nuget bằng lệnh Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force

Bước 4: Download VMware.PowerCLI.
Tải VMware.PowerCLI bằng lệnh Save-Module -Name VMware.PowerCLI -Path C:\Temp\PowerCLI
. Bạn cần chờ vài phút để máy thực hiện tải các module về thư mục đã tạo ở bước 1.


Sau khi tải xong, trong thư mục chứa các module sẽ có các file như hình dưới.

Trong quá trình tải về, nếu máy bạn có internet kém thì rất có thể gặp lỗi. Hãy xóa các file đã tải trước đó và thực hiện lệnh tải lại.
Bước 5: Copy các module VMware PowerCLI vào Windows PowerShell.
Thực hiện các lệnh sau để copy các module vừa tải về vào thư mục PowerShell, cần chờ vài phút vì dung lượng copy khoảng trên 300MB.
Copy-Item -Recurse C:\Temp\PowerCLI\* -Destination C:\Windows\System32\WindowsPowerShell\v1.0\Modules

Thực hiện import moudle VMware.
Import-Module VMware.VimAutomation.Core
Tại bước này sẽ có cảnh báo, bỏ qua cảnh báo này.

Cấu hình để bỏ qua chế độ check SSL khi kết nối với vCenter hoặc ESXi host. Chọn Y khi được hỏi ở màn hình.
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore

Tới đây đã kết thúc việc cài đặt PowerCLI từ Windows PowerShell. Ta có thể thực hiện vài lệnh để kiểm tra thông tin trước khi chuyển sang phầm tiếp theo.
Kiểm tra version của PowerCLI: Get-Module
hoặc sử dụng lệnh Get-PowerCLIVersion


Hướng dẫn sử dụng PowerCLI cơ bản.
Sau khi cài đặt PowerCLI, ta sẽ tìm hiểu cách sử dụng cơ bản. Trong hướng dẫn này tôi sẽ dùng PowerCLI kết nói tới ESXi host (cũng khá tương tự khi kết nối tới vCenter)
Tiên quyết khi muốn quản trị, vận hành, tự động hóa được vSphere thì cần phải kết nối được và các hệ thống của VMware trước.
Thực hiện kết nối tới ESXi host bằng tài khoản quản trị root` bằng cú pháp lệnh dưới.
Connect-VIServer -Server IP_ESXi_HOST -User 'root' -Password 'XXXXX' -WarningAction SilentlyContinue
Trong đó cần chú ý các tham số:
-Server IP_ESXi_HOST
: Khai báo địa chỉ của ESXi hoặc vCenter.-User 'root'
: Tài khoản của ESXi hoặc vCenter.-Password 'XXXXX'
: Mật khẩu

Một vài lệnh làm quen với PowerCLI
Kiểm tra trạng thái SSH của host ESxi.
Get-VMHost | Get-VMHostService | Where { $_.Key -eq "TSM-SSH" } | Select VMHost, Label, Policy, Running | ft -auto

Sẽ có lệnh thực hiện start, stop dịch vụ SSH (tham khảo ở tài liệu cuối bài).
Kiểm tra thời gian của host ESXi.
Get-VMHost | Select Name,@{Name="Time";Expression={(get-view $_.ExtensionData.configManager.DateTimeSystem).QueryDateTime()}}

Nếu thực kiện kết nối vào vCenter thì sẽ ra thời gian của các host.
Hiển thị tất cả các máy ảo gồm các cột: Name, Cluster, Data Storage
Get-VM | Select Name, @{N=”Cluster”;E={Get-Cluster -VM $_}},@{N=”ESX Host”;E={Get-VMHost -VM $_}},@{N=”Datastore”;E={Get-Datastore -VM $_}}

List các máy chưa cài VMware tool.
Get-View -ViewType “VirtualMachine” -Property Guest,name -filter @{“Guest.ToolsStatus”=”toolsNotInstalled”;”Guest.GuestState”=”running”} | Select Name

Liệt kê các máy có trên 2 vCPU.
Get-VM | Where {$_.NumCPU -gt 2} | Select Name, NumCPU

Bạn có thể trải nghiệm với các lệnh dưới nữa nhé.
Hiển thị 10 máy mới tạo gần đây.
Get-VIEvent -maxsamples 10000 |where {$_.Gettype().Name-eq "VmCreatedEvent" -or $_.Gettype().Name-eq "VmBeingClonedEvent" -or $_.Gettype().Name-eq "VmBeingDeployedEvent"} |Sort CreatedTime -Descending |Select CreatedTime, UserName,FullformattedMessage -First 10
Hiển thị 05 VM đã bị remove khỏi host hoặc cluster.
Get-VIEvent -maxsamples 10000 | where {$_.Gettype().Name -eq "VmRemovedEvent"} | Sort CreatedTime -Descending | Select CreatedTime, UserName, FullformattedMessage -First 19
Liệt kê tất cả các snapshot
Get-VM | Get-Snapshot | Select VM,Name,Description,Created
Và bạn có thể tham khảo theo link của @khoadd tại: github
Trên là hướng dẫn nhanh để các bạn có thể trải nghiệm từ đầu, hi vọng sẽ giúp các bạn bước đầu vọc vạch được với PowerCLI thuận lợi hơn. Các bạn hãy đón đọc các bài tiếp theo nhé, mình sẽ biên tập thêm các nội dung thực tế để ae cùng vọc.
P/S: Trân trọng cảm ơn em KhoaDD đã hỗ trợ và tư vấn, giới thiệu trạng hay cho HCĐ làm lab.
Tài liệu tham khảo:
- https://aventistech.com/2018/07/23/install-powercli-10-on-windows-10/
- https://github.com/D3spereaux/PowerCLI