基本的Hyper-V PowerShell命令

时间:2024-04-11 12:55:24

基本的Hyper-V PowerShell命令

管理Hyper-V环境可能是一项艰巨的任务。因此,您需要一个功能强大的管理工具,该工具可让您从*控制台配置和控制虚拟基础架构。即使您可以使用高级GUI工具(Hyper-V管理器,服务器管理器或System Center虚拟机管理器),但如果不使用PowerShell,您仍将无法完全享受Hyper-V体验并探索虚拟机监控程序的功能。与上述工具不同,PowerShell允许您自动化所有核心任务,从而为您提供更大的灵活性和效率。

今天的博客文章探讨了PowerShell的工作原理,哪些Hyper-V PowerShell命令可以提高虚拟机(VM)性能以及此CLI工具如何大大简化Hyper-V管理过程。这是每个IT管理员都应该知道的Hyper-V PowerShell命令列表:

Get-Command

Get-Help

Get-VM

Start-VM

Stop-VM

Checkpoint-VM

Test-VHD

Measure-VM

Get-VMNetworkAdapter

Update-VMVersion

Get-Process

Where-Object

什么是PowerShell?

PowerShell是Microsoft开发的任务自动化和配置管理框架,其中包括基于.NET Framework和.NET Core的命令行外壳和相关脚本语言。该工具是专门为系统管理员设计的,它包括一个交互式提示和一个脚本环境,可以单独使用或组合使用。

通过在单个PowerShell脚本中排列多个cmdlet,PowerShell命令(也称为cmdlet)可用于自动执行各种任务。Microsoft已经开发了一百多个可用于执行基本或复杂任务的PowerShell核心命令。

但是,PowerShell是一个开源工具,这意味着任何第三方开发人员都可以添加新的cmdlet。因此,任何人都可以通过在GitHub上共享自己的PowerShell命令来为Microsoft PowerShell代码库做出贡献。

PowerShell可以做什么?

新手和经验不足的Hyper-V用户通常更喜欢运行GUI工具,因为它很容易找到所需的功能和设置以及使用图形界面来发现任何问题。但是,GUI工具不会启用自动化,这意味着要将更改应用于所有VM,您将必须分别配置每个Hyper-V VM。例如,在创建新的VM之后,您将必须手动更新其某些默认设置。

PowerShell可以帮助Hyper-V管理员快速自动化管理操作系统(Linux,macOS和Windows)以及相关进程的任务。与GUI工具不同,PowerShell允许您仅使用命令行来管理整个系统。

此外,您可以将所需的Hyper-V PowerShell命令保存到文本文件(扩展名为.ps1),然后运行此脚本来执行某些任务。此外,您可以使用任务计划程序来计划在特定时间启动的PowerShell脚本。

如何打开PowerShell

要在基于GUI的操作系统中打开PowerShell,您需要单击“开始”,然后在搜索栏中键入PowerShell。右键单击PowerShell图标,然后选择“以管理员身份运行”以提升模式打开PowerShell。

基本的Hyper-V PowerShell命令

如果运行Windows Server Core或Hyper-V Server,则必须在命令提示符下键入PowerShell,然后按Enter。之后,“命令提示符”窗口中的Windows PowerShell会话应自动启动。然后,将PS前缀添加到命令提示符,以指示您已启动Windows PowerShell会话。

基本的Hyper-V PowerShell命令

最佳Hyper-V PowerShell命令

在您了解PowerShell是什么以及它如何工作之后,就该学习如何使用Hyper-V PowerShell命令来发挥自己的优势了。有许多有效的Hyper-V PowerShell命令可简化管理Hyper-V的过程。

现在,让我们了解Hyper-V PowerShell命令可以为您的虚拟基础架构打开的各种可能性。

Get-Command

此Hyper-V PowerShell命令对不熟悉PowerShell且不知道应使用哪些cmdlet以及如何使用它们的用户特别有用。通过运行Get-Command cmdlet,可以查看计算机上安装的所有可用cmdlet,功能和别名的完整列表。

基本的Hyper-V PowerShell命令

但是,如果希望缩小搜索范围并获取符合特定条件的Hyper-V PowerShell命令列表,则可以使用Get-Command * -VM cmdlet查找允许您控制和配置VM的命令列表。通过将VM参数更改为VHD,可以获取用于管理虚拟硬盘的cmdlet的完整列表。因此,您可以尝试各种搜索参数以获得所需的结果。

基本的Hyper-V PowerShell命令

Get-Help

确定要使用的Hyper-V PowerShell命令后,您可以了解有关cmdlet的更多信息。为此,可以使用Get-Help cmdlet。例如,要查找有关Get-VM cmdlet的更多信息,请键入以下内容:

Get-Help Get-VM

基本的Hyper-V PowerShell命令

Get-VM

通过以下Hyper-V PowerShell命令,您可以查看一个或多个Hyper-V主机上所有可用的VM。要查看本地Hyper-V主机上的所有VM,应运行Get-VM cmdlet。

基本的Hyper-V PowerShell命令

在PowerShell屏幕上,您可以看到可用VM的列表,包括它们的名称,状态,CPU使用率,分配的内存,正常运行时间,状态和版本。

Start-VM

此特定的cmdlet可帮助您启动所选的VM。为此,请运行以下Hyper-V PowerShell命令:

Start-VM -Name 'Windows Server 2016'

因此,应在本地Hyper-V主机上启动名为Windows Server 2016的VM。让我们通过运行Get-VM cmdlet来检查VM是否已真正启动。

基本的Hyper-V PowerShell命令

此外,您可以使用Start-VM cmdlet的修改版本,该版本允许您仅在VM名称以Hyper-V开头时启动VM:

Start-VM -Name Hyper-V*

基本的Hyper-V PowerShell命令

如您所见,名为Hyper-V Server Desktop的VM已成功启动。但是,另一台VM(Hyper-V Server 2012)已经处于运行状态,PowerShell会通知您这一事实。

Stop-VM

Stop-VM cmdlet允许您关闭或关闭选定的VM。为此,可以运行以下cmdlet:

Stop-VM -Name 'Windows Server 2016'

基本的Hyper-V PowerShell命令

如您所见,所选的VM已通过客户机OS成功关闭。

另一个示例是,您可以关闭名称以Hyper-V开头的VM:

Stop-VM -Name Hyper-V* –TurnOff

基本的Hyper-V PowerShell命令

如果发现您的VM没有响应,则可以强制其关闭。为此,运行以下PowerShell cmdlet:

Stop-VM -Name 'Windows Server 2016' –Force

请注意,强制关机类似于拉物理机上的电源,这意味着它可能会导致未保存的应用程序数据丢失。在这种情况下,建议您保存虚拟机,以避免潜在的数据丢失。为此,您需要运行Save-VM cmdlet,它等同于休眠物理计算机:

Save-VM -Name 'Windows Server 2016'

如果选择保存名称以Hyper-V开头的VM,请运行以下Hyper-V PowerShell命令:

Get-VM -Name Hyper-V* | Save-VM

基本的Hyper-V PowerShell命令

Checkpoint-VM

另一个对管理虚拟环境至关重要的Hyper-V PowerShell命令是Checkpoint-VM cmdlet。Checkpoint-VM cmdlet可帮助您创建所选VM的Hyper-V快照(也称为Hyper-V快照)。运行以下cmdlet来创建特定VM(Windows Server 2016)的名为Update1的检查点。

Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1

要验证是否已成功创建VM,请使用以下Hyper-V PowerShell命令:

Get-VMSnapshot -VMName 'Windows Server 2016'

基本的Hyper-V PowerShell命令

另一方面,如果要删除某些Hyper-V快照,则可以使用Remove-VMSnapshot cmdlet。例如,如果要删除名称以“ Testing”开头的所有VM快照,则应运行以下cmdlet:

Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*

基本的Hyper-V PowerShell命令

上面的屏幕快照演示了删除所选Hyper-V快照的整个过程。

Test-VHD

此Hyper-V PowerShell命令用于验证虚拟硬盘文件是否确实存在,并且可用于Hyper-V部署。该cmdlet如下所示:

Test-VHD -Path C:\Testing.vhd

在VHD路径有效的情况下,您将在屏幕上看到以下输出。

基本的Hyper-V PowerShell命令

Measure-VM

通过此Hyper-V PowerShell命令,您可以收集特定VM的资源利用率数据。例如,运行以下cmdlet来了解名为Windows Server 2016的VM的CPU使用率,RAM使用率,磁盘容量和网络流量:

Measure-VM -VMName 'Windows Server 2016'

基本的Hyper-V PowerShell命令

请注意,仅在所选VM上启用资源计量后,Measure-VM cmdlet才能报告所需的数据。要启用资源计量,请使用以下Hyper-V PowerShell命令:

Enable-VMResourceMetering -VMName 'Windows Server 2016'

Get-VMNetworkAdapter

另一个有用的PowerShell cmdlet是Get-VMNetworkAdapter,它使您可以识别所选VM的虚拟网络适配器。例如,如果要从所有虚拟机以及管理操作系统中查找虚拟网络适配器,则应运行以下Hyper-V PowerShell命令:

Get-VMNetworkAdapter –All

如果一切正确,那么您应该在PowerShell屏幕上看到以下信息:

基本的Hyper-V PowerShell命令

使用Hyper-V PowerShell命令,可以使用Hyper-V网络适配器执行各种简单和复杂的任务。查看我们的博客文章之一,找出哪些cmdlet可以帮助您在Hyper-V环境中管理和配置虚拟网络适配器。

Update-VMVersion

PowerShell具有一个cmdlet,可用于更新所选VM的版本:

Update-VMVersion -Name 'TestVM'

运行Hyper-V PowerShell命令后,可以将名为TestVM的VM更新为当前的VM版本。

基本的Hyper-V PowerShell命令

Get-Process

此Hyper-V PowerShell命令可以帮助您查看本地计算机上的所有当前进程。运行Get-Process cmdlet之后,您可以在屏幕上获取以下信息:

基本的Hyper-V PowerShell命令

该表包含有关进程已打开多少句柄的信息;该进程正在使用多少非页面内存;进程正在使用多少可分页内存;流程工作集的大小;进程正在使用多少虚拟内存;已为所有处理器分配了多少处理器时间;进程ID;进程名称。

要缩小搜索范围并找到特定的进程,应键入进程名称或ID。例如,如果您想了解Microsoft Word当前的工作方式,则应浏览所有正在运行的进程的列表,并找到包含有关Microsoft Word(即WinWord)的信息(包括其进程ID)的行。使用进程ID,可以运行以下cmdlet来获取必要的数据:

Get-Process -ID 8892

基本的Hyper-V PowerShell命令

此外,有关当前WinWord进程的数据可以用另一种格式表示,即作为属性列表。运行此cmdlet可获得更详细的输出:

Get-Process WINWORD | Format-List *

基本的Hyper-V PowerShell命令

掌握了流程数据之后,您可以运行以下cmdlet:

Stop-Process,它使您可以停止一个或多个正在运行的进程。

Wait-Process,它允许您等待一个或多个正在运行的进程停止,然后再启用任何其他输入。

Start-Process,它使您可以在本地计算机上启动一个或多个进程。

Debug-Process,它允许您将调试器附加到本地计算机上的一个或多个正在运行的进程。

例如,如果要从PowerShell启动记事本应用程序,则应运行以下cmdlet:

Start-Process -FilePath "notepad.exe"

另一个示例是当您以“普通”模式打开PowerShell,但是需要以提升模式运行PowerShell才能访问管理权限。在这种情况下,请运行以下Hyper-V PowerShell命令:

Start-Process -FilePath "powershell" -Verb RunAs

基本的Hyper-V PowerShell命令

另一方面,如果正在运行的进程之一停止响应,则可以运行Stop-Process cmdlet暂停失败的应用程序:

Stop-Process -Name "notepad"

在这种情况下,本地计算机上的记事本应用程序的所有实例都将停止。

每个记事本实例都有其自己的进程ID。如果要停止特定的记事本实例,则应使用Stop-Process cmdlet中的ID参数。为此,您首先需要运行Get-Process cmdlet,找到所需的活动进程,并标识要停止的进程ID。

基本的Hyper-V PowerShell命令

例如,您可以通过标识特定的记事本进程的进程ID并运行以下Hyper-V PowerShell命令来停止该进程:

Stop-Process -ID 5052

因此,仅应停止选定的记事本进程。

Where-Object

通过此Hyper-V PowerShell命令,可以筛选管道对象并找到所需的确切数据。在这种情况下,您需要创建一个PowerShell脚本,在其中指定可以沿管道传递哪些对象。使用各种搜索条件,您可以在本地计算机上找到任何对象。

例如,如果要查找已停止运行的进程,请使用此cmdlet:

Get-Service | Where-Object {$_.Status -eq 'Stopped'}

当您要查找特定的cmdlet时,使用Where-Object cmdlet的另一个示例。以下Hyper-V PowerShell命令可以帮助您找到所有以Wait开头的cmdlet:

Get-Command | Where-Object {$_.Name -like '*wait*'}

基本的Hyper-V PowerShell命令

下一个Where-Object cmdlet可以帮助您仅基于其名称来查找特定进程。通过运行以下命令,可以获得名称以sys开头的所有进程的列表:

Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}

基本的Hyper-V PowerShell命令

如您所见,使用这些cmdlet可以执行的任务数量令人印象深刻,您绝对应该更加注意Hyper-V PowerShell命令。PowerShell cmdlet允许您同时使用多个VM执行各种任务,并充分利用Hyper-V功能。尽管PowerShell乍一看似乎令人生畏,但是一旦您了解如何使用它,您就可以快速发现如何使用Hyper-V PowerShell命令来发挥自己的优势。