Các kỹ thuật lập trình PowerCLI cơ bản cho VMware vSphere

Trước đây, chúng ta đã tìm hiểu về PowerCLI – khái niệm, cách cài đặt và tích hợp vào Windows PowerShell ISE. Bây giờ, hãy cùng tìm hiểu về các thao tác lập trình cơ bản, bao gồm kết nối, các lệnh PowerCLI cũng như việc lặp lại.

NAKIVO cho sao lưu VMware vSphere

NAKIVO cho sao lưu VMware vSphere

Bảo vệ dữ liệu toàn diện cho các máy ảo VMware vSphere và các tùy chọn khôi phục tức thì. Các điểm sao lưu an toàn tại chỗ, ngoài cơ sở và trên đám mây. Các tính năng chống ransomware.

Các lệnh PowerCLI cơ bản

Hãy cùng xem qua một số lệnh PowerCLI cơ bản để thấy việc trích xuất thông tin từ môi trường vSphere bằng PowerCLI dễ dàng như thế nào. Xin lưu ý rằng nội dung dưới đây không nhằm mục đích là một hướng dẫn toàn diện, mà chỉ là phần giới thiệu về PowerCLI, cách bắt đầu thực thi các lệnh và học cách tự động hóa môi trường của bạn.

Lệnh đầu tiên chúng ta cần chạy là lệnh để thực sự kết nối với môi trường vSphere của mình. Bạn có thể kết nối trực tiếp với một máy chủ ESXi hoặc với vCenter Server.

Để kết nối, hãy chạy lệnh sau trong một phiên PowerShell hỗ trợ PowerCLI:

  • connect-viserver –server 〈yourserver〉

Khi chạy lệnh, bạn sẽ được yêu cầu nhập thông tin đăng nhập. Nhập tên người dùng và mật khẩu của bạn cho tài khoản Máy chủ ESXi hoặc vCenter Server.

Basic PowerCLI scripting

Một trong những lệnh cơ bản nhất mà chúng ta có thể thực thi khi kết nối với ESXi hoặc vCenter là xem tất cả các máy ảo (VM) trong môi trường. Chúng ta sử dụng lệnh get-vm để hiển thị thông tin về các máy ảo khách.

  • Get-VM - The get-vm commandlet lists VMs running on the connected host

get-vm commandlet

Để lấy thông tin chi tiết hơn từ lệnh ` get-vm `, chúng ta có thể hiển thị thông tin đầy đủ bằng lệnh: `

  • Get-VM | fl ` – Hiển thị thông tin chi tiết hơn như Hệ điều hành khách, Nhóm tài nguyên, Phiên bản phần cứng máy ảo, thư mục chứa máy ảo và nhiều chi tiết khác.

Get VM Full Information

Bây giờ, hãy lấy thông tin cụ thể hữu ích từ lệnh `Get-VM`. Hãy tìm các máy ảo đang ở trạng thái `PoweredOff`. Chúng ta có thể lấy thông tin từ lệnh ` Get-VM ` và sau đó chuyển kết quả vào lệnh ` where-object ` để lọc ra thông tin cụ thể mà chúng ta muốn tra cứu – trong trường hợp này là ` PowerState`. Như bạn có thể thấy, có rất nhiều khả năng trong việc lấy các thông tin khác nhau về VM và chuyển thông tin này vào một lệnh PowerShell khác.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”}

Get-VM PowerState

Như bạn có thể thấy, điều này chỉ hiển thị các VM đang ở trạng thái “PoweredOff”. Điều này có thể cực kỳ hữu ích. Chúng ta thậm chí có thể chuyển kết quả của lệnh trên vào lệnh Start-VM . Vì vậy, về cơ bản, chúng ta có thể lấy tất cả các máy ảo đã tắt nguồn và sau đó bật nguồn cho các máy ảo đó.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”} | Start-VM

Start-VM commandlet

Còn việc tắt nguồn các máy ảo cụ thể thì sao? Chúng ta cũng có thể làm điều đó. Chúng ta có thể gọi tên máy ảo và sau đó sử dụng lệnh Stop-VMGuest , lệnh này sẽ khởi động quá trình tắt nguồn hệ điều hành khách.

  • Get-VM 〈yourvm〉 | Stop-VMguest

Stop-VMguest commandlet

Nếu bạn không muốn nhận xác nhận về hành động này, chúng ta có thể thêm tham số –confirm:false: Stop-VMguest –confirm:false

Giả sử chúng ta muốn xem có bao nhiêu máy ảo (VM) đang chạy có được gán hơn 1 CPU . Một lần nữa, chúng ta có thể sử dụng lệnh where-object để lọc ra đối tượng NumCpu .

  • Get-VM | where-object {$_.NumCpu –gt 1 }

where-object commandlet

Vòng lặp PowerCLI

Vòng lặp cho phép bạn thực hiện cùng một thao tác nhiều lần trên các đối tượng đã chọn hoặc lặp lại một số lần nhất định. Ví dụ, với vòng lặp foreach, chúng ta có thể lặp lại một hành động cụ thể nhiều lần. Cách thiết lập tương tự như mã giả dưới đây:

foreach ($var in $vars){
Do something…
}

Nếu muốn xác định cụ thể các đối tượng mà chúng ta sẽ thực hiện hành động, chúng ta có thể, ví dụ, lặp qua một danh sách cụ thể các máy ảo (VM) từ một tệp văn bản. Để tạo tệp văn bản này, chúng ta có thể chạy lệnh Get-VM để chọn các thuộc tính mong muốn, sau đó chuyển kết quả vào một tệp văn bản. Sau đó, chúng ta có thể sử dụng PowerShell để đọc tệp văn bản và đưa các máy ảo vào một mảng, trên đó chúng ta có thể lặp qua và thực hiện hành động. Dưới đây, chúng ta đang thêm một bộ điều hợp mạng mới vào các máy ảo trong danh sách.

Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:VMs.txt

$vms = get-content c:VMs.txt

Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Port group name〉" -Type "VMXNET3" –startconnected
}

Tài nguyên

Có rất nhiều tài nguyên tuyệt vời trên web, bao gồm các trang blog cá nhân, tài liệu chính thức, mẫu mã nguồn, v.v. Điều tôi nhận thấy là nếu bạn nghĩ ra điều gì đó muốn làm, rất có thể đã có ai đó viết sẵn một dòng mã PowerCLI để thực hiện điều đó. Điều tốt nữa là thường bạn có thể tìm thấy thứ gì đó rất gần với những gì bạn muốn làm, và sau khi nắm vững các kiến thức cơ bản, bạn có thể chỉnh sửa nó để phù hợp với nhu cầu của mình. Bằng cách này, bạn cũng đang học PowerCLI và cách nó hoạt động, cũng như cách chỉnh sửa mã để thực hiện tác vụ bạn cần hoàn thành.

Một nơi tuyệt vời để bắt đầu với tài liệu và các tài nguyên khác là trang web chính thức về bản phát hành và tài liệu PowerCLI của VMware. Tại đây, bạn có thể tải xuống các tệp nhị phân cũng như Hướng dẫn Sử dụng chính thức.

Ngoài ra, còn có rất nhiều sách chứa các kịch bản và ví dụ kịch bản mà bạn có thể phân tích và tùy chỉnh. Hãy nhớ rằng cộng đồng các quản trị viên VMware ngoài kia, phần lớn đều sẵn lòng chia sẻ kiến thức mà họ đã học được từ người khác trên con đường trở nên thành thạo với PowerCLI. Hãy liên hệ với những người trong cộng đồng của bạn để được giúp đỡ về các vấn đề cụ thể hoặc chỉ là các nguyên tắc chung.

Ý kiến

PowerCLI thực sự rất mạnh mẽ. Chúng ta mới chỉ chạm đến bề mặt trong các ví dụ được trình bày ở trên. Bất kỳ tác vụ nào bạn phải thực hiện lặp đi lặp lại, hoặc những tác vụ rườm rà khi thực hiện trên trình duyệt web đều là những ứng cử viên lý tưởng để tự động hóa bằng PowerCLI. Trên thực tế, đó thường là cách mà hầu hết mọi người làm quen với PowerCLI – họ có một tác vụ cần thực hiện tự động, hoặc một hành động phụ thuộc vào các hành động khác trong vSphere, hay đơn giản là những hành động lặp đi lặp lại rất phù hợp để tự động hóa.

Cách tốt nhất để học PowerCLI là tải xuống, cài đặt và bắt đầu sử dụng nó trong môi trường phòng thí nghiệm như phòng thí nghiệm tại nhà. Sức mạnh thực sự của môi trường VMware vSphere chỉ được khai phá khi bạn nhận ra tiềm năng của việc sử dụng tự động hóa để kiểm soát vSphere. Vì vậy, hãy bắt đầu viết kịch bản với PowerCLI và bạn sẽ không bao giờ hối hận!

Hãy thử NAKIVO Backup & Replication

Hãy thử NAKIVO Backup & Replication

Đăng ký dùng thử miễn phí để khám phá toàn bộ các tính năng bảo vệ dữ liệu của giải pháp. Dùng thử miễn phí trong 15 ngày. Không có bất kỳ giới hạn nào về tính năng hay dung lượng. Không cần thẻ tín dụng.

People also read