Các lệnh PowerShell cơ bản cho Hyper-V: Chúng là gì và cách sử dụng
Việc quản lý môi trường Hyper-V có thể là một nhiệm vụ đầy thách thức. Do đó, bạn cần một công cụ quản lý mạnh mẽ để cấu hình và điều khiển hạ tầng ảo của mình từ một bảng điều khiển trung tâm. Ngoài giao diện người dùng đồ họa, Hyper-V còn cung cấp giao diện dòng lệnh sử dụng PowerShell để quản lý Hyper-V.
Trong bài viết blog này, chúng tôi sẽ mô tả cách PowerShell hoạt động, các lệnh PowerShell nào của Hyper-V có thể cải thiện hiệu suất của máy ảo (VM), và cách công cụ CLI này có thể đơn giản hóa đáng kể quy trình quản lý Hyper-V.
PowerShell là gì?
PowerShell là một khung công tác tự động hóa tác vụ và quản lý cấu hình do Microsoft phát triển, bao gồm một vỏ dòng lệnh và ngôn ngữ kịch bản liên quan được xây dựng trên nền tảng .NET Framework và .NET Core.
Các lệnh PowerShell, còn được gọi là cmdlets, có thể được sử dụng để tự động hóa các tác vụ khác nhau bằng cách sắp xếp nhiều cmdlets trong một kịch bản PowerShell duy nhất. Microsoft đã phát triển hơn một trăm lệnh PowerShell cốt lõi có thể được sử dụng để thực hiện các tác vụ phức tạp cũng như cơ bản.
PowerShell có thể làm gì?
PowerShell có thể giúp các quản trị viên Hyper-V tự động hóa nhanh chóng các tác vụ quản lý hệ điều hành (Linux, macOS và Windows) cùng các quy trình liên quan. Khác với các công cụ giao diện đồ họa (GUI), PowerShell cho phép bạn quản lý toàn bộ hệ thống chỉ thông qua dòng lệnh.
Hơn nữa, bạn có thể lưu các lệnh PowerShell cần thiết cho Hyper-V vào một tệp văn bản (với phần mở rộng .ps1 ) và sau đó chạy tệp kịch bản này để thực hiện các tác vụ cụ thể. Hơn nữa, bạn có thể lên lịch cho các kịch bản PowerShell chạy vào một thời điểm cụ thể bằng Trình lập lịch tác vụ.
Cách mở PowerShell
Có một số cách để chạy PowerShell trong Hyper-V. Cách đơn giản nhất để truy cập PowerShell là kết nối trực tiếp với máy chủ Hyper-V và khởi chạy từ đó. Để kết nối từ xa với máy chủ Hyper-V, chúng ta cần đảm bảo rằng Remote Desktop đã được bật. Sau khi Remote Desktop được bật, chúng ta có thể sử dụng tiện ích Remote Desktop và kết nối từ xa với máy chủ như cách chúng ta làm với bất kỳ giao diện người dùng đồ họa (GUI) nào của Windows Server.
Mở PowerShell từ GUI
Để mở PowerShell trong hệ điều hành dựa trên GUI, hãy làm theo các bước sau:
- Bạn cần nhấp vào
Startvà nhậpPowerShellvào thanh tìm kiếm. - Nhấp chuột phải vào biểu tượng PowerShell và chọn
Run as Administratorđể mở PowerShell ở chế độ nâng cao.
Mở PowerShell từ dòng lệnh
Để chạy PowerShell nếu bạn đang sử dụng Windows Server Core hoặc Hyper-V Server, hãy làm theo các bước sau:
- Nhập
PowerShellvào Command Prompt và nhấnEnter. - Một phiên Windows PowerShell sẽ tự động khởi động trong cửa sổ Command Prompt. Tiền tố “PS” sẽ được thêm vào dòng lệnh để cho biết bạn đã khởi chạy phiên Windows PowerShell.
- Khi đã vào PowerShell, bạn có thể sử dụng các lệnh PowerShell dành riêng cho Hyper-V, mà chúng tôi sẽ đề cập chi tiết hơn ở phần sau của bài viết này.
Cài đặt từ xa
Để kiểm tra cài đặt máy tính từ xa trong Windows Server Core hoặc Hyper-V Server, bạn có thể khởi chạy tiện ích sconfig nếu chưa được khởi chạy và cấu hình nó bằng tùy chọn 7. Ngoài ra, sau khi kết nối từ xa với máy chủ Hyper-V, bạn có thể sử dụng tùy chọn 15 để Exit to Command Line.
Khi vào đó, bạn đang ở trong môi trường cmd.exe thông thường – không phải PowerShell. Để khởi chạy môi trường PowerShell, chỉ cần gõ powershell vào dòng lệnh.
PowerShell từ xa
Sử dụng PowerShell, bạn cũng có thể tương tác từ xa với Hyper-V. Nói cách khác, bạn có thể thực thi các lệnh PowerShell trên máy chủ Hyper-V mà không cần thiết lập kết nối Remote Desktop.
Từ máy trạm quản trị nơi đã cài đặt các công cụ quản lý Hyper-V, chúng ta có thể thực thi các lệnh Hyper-V. Đầu tiên, chúng ta cần cài đặt các công cụ Hyper-V, bao gồm các lệnh này (cmdlets).
Install-WindowsFeature RSAT-Hyper-V-Tools
Sau khi cài đặt các công cụ, chúng ta có thể chạy các lệnh tương tự bằng cách sử dụng tham số ` -computername ` trỏ đến máy chủ Hyper-V của mình, như trong hình ảnh minh họa bên dưới. Chúng ta truyền tên máy chủ của mình vào lệnh PowerShell ` get-vm `.
12 Lệnh PowerShell Hyper-V thiết yếu
Có một số lệnh PowerShell Hyper-V hiệu quả có thể giúp quá trình quản lý Hyper-V trở nên dễ dàng và đơn giản. Hãy cùng xem cách sử dụng các lệnh PowerShell Hyper-V khác nhau.
Get-Command
Hãy bắt đầu với một lệnh PowerShell Hyper-V hữu ích cho người dùng mới làm quen với PowerShell và chưa biết nên sử dụng cmdlet nào cũng như cách sử dụng. Bằng cách chạy cmdlet Get-Command , bạn có thể xem danh sách đầy đủ tất cả các cmdlet (lệnh Windows PowerShell), hàm và biệt danh đã cài đặt trên máy tính.
Tuy nhiên, nếu bạn muốn thu hẹp phạm vi tìm kiếm và lấy danh sách các lệnh PowerShell của Hyper-V phù hợp với các tiêu chí cụ thể, bạn có thể sử dụng lệnh Get-Command *-VM để tìm danh sách các lệnh cho phép bạn điều khiển và cấu hình máy ảo (VM).
Bằng cách thay đổi tham số VM thành VHD , bạn có thể lấy danh sách đầy đủ các cmdlet được sử dụng để quản lý đĩa cứng ảo. Do đó, bạn có thể thử các tham số tìm kiếm khác nhau để có được kết quả mong muốn. 
Get-Help
Sau khi đã quyết định sẽ sử dụng lệnh PowerShell Hyper-V nào, bạn có thể tìm hiểu thêm về lệnh đó. Để làm điều này, bạn có thể sử dụng lệnh Get-Help. Ví dụ, để tìm hiểu thêm về lệnh Get-VM, hãy nhập như sau:
Get-Help Get-VM
Get-VM
Lệnh PowerShell Get-VM cho phép bạn xem tất cả các máy ảo (VM) có sẵn trên một hoặc nhiều máy chủ Hyper-V. Để xem tất cả các máy ảo trên máy chủ Hyper-V cục bộ, bạn nên chạy lệnh PowerShell ` Get-VM `.
Trên màn hình PowerShell, bạn có thể xem danh sách các máy ảo có sẵn, bao gồm tên, trạng thái, sử dụng CPU, bộ nhớ được phân bổ, thời gian hoạt động, trạng thái và phiên bản.
Start-VM
Lệnh PowerShell ` ` `start VM` ` ` này giúp bạn khởi động một máy ảo. Để thực hiện điều này, hãy chạy lệnh PowerShell Hyper-V sau:
Start-VM -Name 'Windows Server 2016'
Kết quả là, máy ảo có tên Windows Server 2016 đã được khởi động trên máy chủ Hyper-V cục bộ của bạn. Hãy kiểm tra xem máy ảo đã thực sự khởi động chưa bằng cách chạy lệnh Get-VM cmdlet.
Hơn nữa, bạn có thể sử dụng phiên bản sửa đổi của lệnh Start-VM PowerShell cmdlet để khởi động các máy ảo chỉ khi tên của chúng bắt đầu bằng Hyper-V :
Start-VM -Name Hyper-V*
Như bạn có thể thấy, máy ảo có tên Hyper-V Server Desktop đã khởi động thành công. Tuy nhiên, một máy ảo khác ( Hyper-V Server 2012 ) đã ở trạng thái đang chạy và PowerShell thông báo cho bạn về điều này.
Stop-VM
Lệnh Stop-VM cho phép bạn tắt hoặc ngừng hoạt động của một máy ảo. Để thực hiện điều này, bạn có thể chạy lệnh sau:
Stop-VM -Name 'Windows Server 2016'
Như bạn có thể thấy, máy ảo đã được chọn đã được tắt thành công thông qua hệ điều hành khách.
Một ví dụ khác là bạn có thể tắt các máy ảo có tên bắt đầu bằng Hyper-V :
Stop-VM -Name Hyper-V* -TurnOff
Nếu bạn phát hiện máy ảo của mình không phản hồi, bạn có thể buộc tắt máy ảo đó. Để thực hiện điều này, hãy chạy lệnh PowerShell sau:
Stop-VM -Name 'Windows Server 2016' -Force
Lưu ý rằng việc tắt máy ảo bắt buộc tương tự như việc ngắt nguồn trên máy tính vật lý, có nghĩa là nó có thể dẫn đến mất dữ liệu ứng dụng chưa được lưu. Trong trường hợp này, bạn nên lưu máy ảo để tránh mất dữ liệu tiềm ẩn. Để thực hiện việc này, bạn cần chạy lệnh Save-VM , tương đương với việc đưa máy tính vật lý vào chế độ ngủ đông:
Save-VM -Name 'Windows Server 2016'
Nếu bạn muốn lưu các máy ảo có tên bắt đầu bằng Hyper-V , hãy chạy lệnh Hyper-V PowerShell sau:
Get-VM -Name Hyper-V* | Save-VM
Checkpoint-VM
Lệnh Checkpoint-VM giúp bạn tạo Điểm kiểm tra máy ảo Hyper-V (còn được gọi là ảnh chụp nhanh Hyper-V). Chạy lệnh cmdlet sau để tạo điểm kiểm tra có tên Update1 cho máy ảo cụ thể ( Windows Server 2016 ):
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1
Để xác minh rằng máy ảo đã được tạo thành công, hãy sử dụng lệnh Hyper-V PowerShell sau:
Get-VMSnapshot -VMName 'Windows Server 2016'
Mặt khác, nếu bạn muốn xóa một số bản chụp nhanh Hyper-V nhất định, bạn có thể sử dụng lệnh cmdlet Remove-VMSnapshot . Ví dụ, nếu chúng ta muốn xóa tất cả các bản sao lưu máy ảo có tên bắt đầu bằng Testing , chúng ta nên chạy lệnh cmdlet sau:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*
Ảnh chụp màn hình trên minh họa toàn bộ quá trình xóa các bản sao lưu Hyper-V đã chọn.
Test-VHD
Lệnh PowerShell Hyper-V này được thiết kế để xác minh rằng tệp đĩa cứng ảo thực sự tồn tại và có thể được sử dụng cho triển khai Hyper-V. Cmdlet này như sau:
Test-VHD -Path C:Testing.vhd
Trong trường hợp đường dẫn VHD hợp lệ, bạn sẽ thấy kết quả sau trên màn hình:
Để tìm hiểu thêm về quản lý đĩa cứng ảo bằng các cmdlet PowerShell, chúng tôi khuyên bạn nên đọc bài viết trên blog của chúng tôi về Những kiến thức cơ bản về việc làm việc với các tệp VHD và VHDX của Hyper-V.
Measure-VM
Lệnh PowerShell Hyper-V này cho phép bạn thu thập dữ liệu sử dụng tài nguyên cho một máy ảo cụ thể. Ví dụ, hãy chạy lệnh cmdlet sau để tìm hiểu về việc sử dụng CPU, RAM, dung lượng đĩa và lưu lượng mạng cho máy ảo có tên Windows Server 2016 :
Measure-VM -VMName 'Windows Server 2016'
Lưu ý rằng lệnh cmdlet Measure-VM chỉ có thể báo cáo dữ liệu cần thiết sau khi tính năng đo lường tài nguyên đã được bật trên máy ảo. Để bật tính năng đo lường tài nguyên, hãy sử dụng lệnh Hyper-V PowerShell sau:
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Get-VMNetworkAdapter
Một cmdlet PowerShell hữu ích khác là Get-VMNetworkAdapter, cho phép bạn xác định các bộ điều hợp mạng ảo của máy ảo đã chọn. Ví dụ, nếu bạn muốn tìm các bộ điều hợp mạng ảo từ tất cả các máy ảo cũng như hệ điều hành quản lý, bạn nên chạy lệnh PowerShell Hyper-V sau:
Get-VMNetworkAdapter –All
Nếu mọi thứ đúng, bạn sẽ thấy thông tin sau trong cửa sổ PowerShell:
Sử dụng các lệnh PowerShell Hyper-V, bạn có thể thực hiện các tác vụ đơn giản cũng như phức tạp với các bộ điều hợp mạng Hyper-V của mình. Hãy tham khảo hướng dẫn của chúng tôi về các lệnh cmdlet có thể giúp quản lý và cấu hình bộ điều hợp mạng ảo trong môi trường Hyper-V của bạn.
Update-VMVersion
PowerShell có một cmdlet cho phép bạn cập nhật phiên bản của máy ảo (VM) đã chọn:
Update-VMVersion -Name 'TestVM'
Sau khi chạy lệnh PowerShell của Hyper-V, máy ảo có tên TestVM có thể được cập nhật lên phiên bản máy ảo hiện tại. 
Get-Process
Lệnh PowerShell Hyper-V này có thể giúp bạn xem tất cả các tiến trình hiện tại trên máy tính cục bộ của mình. Sau khi chạy lệnh Get-Process , bạn sẽ thấy các thông tin sau hiển thị trên màn hình:
Bảng này bao gồm các thông tin về:
- số lượng handle mà quá trình đã mở
- lượng bộ nhớ không được phân trang mà quá trình đang sử dụng
- lượng bộ nhớ có thể phân trang mà quá trình đang sử dụng
- kích thước của tập làm việc của quá trình
- lượng bộ nhớ ảo mà quá trình đang sử dụng
- lượng thời gian xử lý đã được phân bổ cho tất cả các bộ xử lý
- ID của quá trình
- tên của quá trình
Để thu hẹp phạm vi tìm kiếm và tìm một quá trình cụ thể, bạn nên nhập tên hoặc ID của quá trình. Ví dụ, nếu bạn muốn biết Microsoft Word hiện đang hoạt động như thế nào, bạn nên xem qua danh sách tất cả các quá trình đang chạy và tìm dòng chứa thông tin về Microsoft Word (tức là WinWord), bao gồm ID quá trình của nó. Sử dụng ID quá trình, bạn có thể chạy lệnh cmdlet sau để lấy dữ liệu cần thiết:
Get-Process -ID 8892
Hơn nữa, dữ liệu về các quá trình WinWord hiện tại có thể được hiển thị dưới định dạng khác, tức là dưới dạng danh sách các thuộc tính. Chạy lệnh cmdlet này để nhận kết quả chi tiết hơn:
Get-Process WINWORD | Format-List *
Sau khi thu thập được dữ liệu quá trình, bạn có thể chạy các lệnh cmdlet sau:
Stop-Processcho phép bạn dừng một hoặc nhiều quá trình đang chạy.Wait-Processcho phép bạn chờ một hoặc nhiều quá trình đang chạy bị dừng trước khi cho phép bất kỳ đầu vào nào khác.Start-Processcho phép bạn khởi động một hoặc nhiều quá trình trên máy tính cục bộ.Debug-Processcho phép bạn gắn trình gỡ lỗi vào một hoặc nhiều quá trình đang chạy trên máy tính cục bộ.
Ví dụ: nếu bạn muốn khởi chạy ứng dụng Notepad từ PowerShell, bạn nên chạy cmdlet sau:
Start-Process -FilePath "notepad.exe"
Một ví dụ khác là khi bạn đã mở PowerShell ở chế độ “bình thường”, nhưng bạn cần chạy PowerShell ở chế độ nâng cao để có quyền quản trị. Trong trường hợp này, hãy chạy lệnh Hyper-V PowerShell sau:
Start-Process -FilePath "powershell" -Verb RunAs
Mặt khác, nếu một trong các quy trình đang chạy ngừng phản hồi, bạn có thể chạy lệnh cmdlet Stop-Process để dừng ứng dụng bị lỗi:
Stop-Process -Name "notepad"
Trong trường hợp này, tất cả các phiên bản của ứng dụng Notepad trên máy tính cục bộ sẽ bị dừng.
Mỗi phiên bản Notepad có ID quy trình riêng. Nếu bạn muốn dừng một phiên bản Notepad cụ thể, bạn nên sử dụng tham số ID trong lệnh Stop-Process. Để thực hiện việc này, trước tiên bạn cần chạy lệnh ` ` `Get-Process` ` `, tìm các tiến trình đang hoạt động cần thiết và xác định ID tiến trình mà bạn muốn dừng.
Ví dụ: bạn có thể dừng tiến trình Notepad cụ thể bằng cách xác định ID tiến trình của nó và chạy lệnh PowerShell Hyper-V sau:
Stop-Process -ID 5052
Kết quả là chỉ có tiến trình Notepad đã chọn bị dừng.
Các lệnh PowerShell này cho phép bạn phát hiện một tiến trình đang tiêu tốn tài nguyên không mong muốn và làm giảm hiệu suất Hyper-V để kết thúc tiến trình này.
Where-Object
Lệnh PowerShell Hyper-V này cho phép bạn lọc các đối tượng trong đường ống và tìm chính xác dữ liệu mà bạn cần. Trong trường hợp này, bạn cần tạo một tập lệnh PowerShell trong đó bạn chỉ định các đối tượng nào có thể được truyền qua đường ống. Sử dụng các tiêu chí tìm kiếm khác nhau, bạn có thể tìm bất kỳ đối tượng nào trên máy tính cục bộ.
Ví dụ, nếu bạn muốn tìm các quy trình đã ngừng chạy, hãy sử dụng cmdlet này:
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Một ví dụ khác về việc sử dụng cmdlet Where-Object là khi bạn muốn tìm một cmdlet cụ thể. Lệnh PowerShell Hyper-V sau đây có thể giúp bạn tìm tất cả các cmdlet bắt đầu bằng Wait :
Get-Command | Where-Object {$_.Name -like '*wait*'}
Cmdlet Where-Object tiếp theo có thể giúp bạn tìm một quy trình cụ thể chỉ dựa trên tên của nó. Bằng cách chạy lệnh sau, bạn có thể lấy danh sách tất cả các quy trình có tên bắt đầu bằng sys :
Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}
Cách tạo máy ảo Hyper-V bằng PowerShell
Một trong những tính năng tích hợp mạnh mẽ của Hyper-V là cho phép sử dụng PowerShell cho các hoạt động quản lý. Trong số nhiều việc chúng ta có thể làm với PowerShell trong Hyper-V là tạo máy ảo. Hãy cùng xem một bộ lệnh PowerShell của Hyper-V để tạo máy ảo mới.
Các lệnh PowerShell để tạo máy ảo mới
Để tạo một máy ảo Thế hệ 2 mới với ổ cứng VHDX 60 GB hoàn toàn mới và kết nối nó với một bộ chuyển mạch ảo (trong trường hợp này là “ ExternalSwitch ”) cụ thể, hãy chạy các lệnh PowerShell sau trên máy chủ Hyper-V của bạn.
-
Tạo máy ảo (VM):
new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:hyper-vvirtualhard disksWSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch" -
Để thêm ổ đĩa DVD cùng với tệp ISO để khởi động, chúng ta có thể thực thi các lệnh sau:
Add-vmscsicontroller -vmname WSTESTAdd-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:ISOmy.iso -
Nếu muốn tạo đĩa có kích thước cố định và gắn vào máy ảo, chúng ta có thể thực thi các lệnh sau để tạo tệp VHDX có kích thước cố định và gắn vào máy ảo:
new-vhd -path "d:hyper-vvirtual hard disks.wstest.vhdx" -sizebytes 60GB -fixedadd-vmharddiskdrive -vmname WSTEST -path "d:hyper-vvirtual hard diskswstest.vhdx"
Kết luận
PowerShell có thể ban đầu trông có vẻ đáng sợ, nhưng một khi bạn đã nắm được cách sử dụng, bạn sẽ nhanh chóng khám phá cách sử dụng các lệnh PowerShell của Hyper-V và tối ưu hóa việc quản lý trong môi trường Hyper-V của mình. Hãy nhớ rằng dù bạn sử dụng công cụ nào để quản lý máy ảo, bạn cần tạo bản sao lưu để tránh mất dữ liệu và thời gian ngừng hoạt động.
NAKIVO Backup & Replication là một giải pháp bảo vệ dữ liệu đáng tin cậy và mạnh mẽ, có thể giúp bạn bảo vệ các môi trường VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows và Microsoft 365.
























