当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 启动和停止 Hyper-V 虚拟机

作者:精品下载站 日期:2024-12-14 19:41:53 浏览:16 分类:玩电脑

如何使用 PowerShell 启动和停止 Hyper-V 虚拟机


在 Windows 11 或 Windows 10 主机上安装或启用 Hyper-V 后,您可以创建 VM 来运行不同的操作系统(来宾操作系统)以用于各种目的。在这篇文章中,我们将向您展示如何使用 PowerShell 启动和停止 Hyper-V VM

[玩转系统] 如何使用 PowerShell 启动和停止 Hyper-V 虚拟机

如何使用 PowerShell 启动和停止 Hyper-V 虚拟机

Hyper-V 管理器可用于手动启动和停止虚拟机。 PowerShell 中的 Start-VM 和 Stop-VM cmdlet 可启动/停止虚拟机。 Hyper-V 模块中提供的 cmdlet 可用于启动/停止 Hyper-V 主机上运行的一台或多台虚拟机。

要使用 PowerShell 在 Hyper-V 中启动或停止虚拟机,请运行以下相应的 cmdlet。该命令启动/停止由 VMName 参数指定的虚拟机 VM-1

Start-VM -VMName VM-1
Stop-VM -VMName VM-1

默认情况下,Start-VM cmdlet 不返回任何输出。因此,您可以使用-PassThru参数生成输出并将其传递到管道中,然后使用Get-VM cmdlet 返回虚拟机的状态。相应的语法应该如下所示:

Start-VM -VMName VM-1 -Passthru | Get-VM

要保存虚拟机状态并停止它,您必须使用 -Save 参数,如下所示:

Stop-VM -VMName VM-1 -Save

要使用 PowerShell 在 Hyper-V 中启动或停止多个虚拟机,请运行以下相应的 cmdlet。该命令将启动/停止所有名称以 VM 开头的虚拟机。

Start-VM -VMName VM*
Stop-VM -VMName VM*

如何停止无响应的 Hyper-V 虚拟机

有时,当您尝试关闭 Hyper-V 虚拟机时,它们可能会挂起。发生此问题时,在 Hyper-V 管理器中,您将看到受影响的虚拟机状态为“正在关闭”,并且不再响应。此外,您无法使用 PowerShell Stop-VM -Force 命令或使用常规控件强制关闭虚拟机,因为当来宾操作系统停止响应时,关闭 Hyper-V 管理器中的 >、关闭重置 按钮呈灰色,按下时返回以下错误:

应用程序在尝试更改 VM 状态时遇到错误。
更改状态失败。
对象处于当前状态时无法执行该操作。

在这种情况下,如果您使用客户端 Hyper-V,您可以使用以下方法强制关闭无响应的虚拟机,而不是关闭(这是一种方法,但这只是一种矫枉过正)您的服务器或 PC:

  1. 电源外壳

  2. 任务管理器或 Process Explorer

让我们看看每种方法所涉及的步骤。

1. 使用 PowerShell 停止无响应的 Hyper-V VM

[玩转系统] 如何使用 PowerShell 启动和停止 Hyper-V 虚拟机

  • 在管理员模式下打开 PowerShell。

  • 键入以下命令并按 Enter 键以获取所有虚拟机 GUID 的输出。您需要知道无响应的虚拟机的名称。

Get-VM
  • 获得虚拟机名称后,运行以下命令。将 VM_NAME 占位符替换为要停止的 VM 的名称:

$VmGUID = (Get-VM 'VM_NAME').id
  • 接下来,运行以下命令查找虚拟机的进程 ID。该命令使用 Win32_Process Windows Management Instrumentation (WMI) 命名空间来查找与 vmwp.exe 和虚拟机的 GUID ($VmGUID) 匹配的正在运行的 CPU 进程。

$VMWMProc = (Get-WMIObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VmGUID})
  • 一旦我们获得了进程 ID ($VMWMProc),您就可以运行 Stop-Process cmdlet(如下所示)来终止该进程:

Stop-Process ($VMWMProc.ProcessId) -Force

2. 使用任务管理器或 Process Explorer 停止无响应的 Hyper-V VM

[玩转系统] 如何使用 PowerShell 启动和停止 Hyper-V 虚拟机

Hyper-V 主机上的所有虚拟机均使用虚拟机工作进程 vmwp.exe 进程实例启动,如果虚拟机卡住,则必须终止该实例。要查找特定进程PID,您需要找出虚拟机的GUID。

对于这两种方法中的任何一种,您都可以使用 Hyper-V 管理器控制台获取 VM GUID。

  • 打开 Hyper-V 服务器设置。

  • 服务器部分包含存储虚拟机配置文件的目录。

  • 识别文件夹后,导航到文件资源管理器中的目录。

  • 在该位置,找到包含卡住的虚拟机名称的文件夹。

  • 复制扩展名为 *.vmcx 的虚拟机配置文件名称中指定的 GUID。

  • 接下来,打开任务管理器并转到详细信息选项卡。

  • 现在,在用户名称列中,找到并终止具有卡住的虚拟机 GUID 的进程 vmwp.exe。

同样,您可以按照以下步骤使用 Process Explorer 工具查找并停止 Hyper-V 主机上卡住的虚拟机进程:

  • 以管理员身份运行 Process Explorer。

  • 接下来,按Ctrl-F组合键或点击查找句柄或 DLL

  • 指定陷入启动/停止状态的 Hyper-V VM 的虚拟磁盘 (*.vhdx) 的路径。

  • Process Explorer 将列出使用虚拟机 VHDX 文件的所有进程。

  • 现在,找到 vmwp.exe 虚拟机进程。

  • 右键单击该进程,然后从菜单中选择终止进程

强制关闭不响应的虚拟机的另一种方法是通过在提升的 PowerShell 提示符下运行以下命令来停止 Hyper-V 服务。 Restart-Service命令将强制关闭服务器上所有正在运行的虚拟机。请记住,重新启动 Hyper-V 服务 (vmms) 可能需要相当长的时间。因此,操作可能需要几分钟才能停止,然后再次重新启动。

Get-Service vmms | Restart-Service

就是这样!

接下来阅读:如何使 Hyper-V 虚拟机在启动时自动启动

如何检查我的虚拟机状态?

要检查 VMware 中单个虚拟机的状态,请执行以下操作:

  • 在 vSphere Client 中,导航到虚拟机。

  • 更新选项卡上,单击检查状态。扫描实体任务显示在“近期任务”窗格中。

  • 任务完成后,状态信息将显示在VMware Tools 和VM 硬件兼容性面板中。

我如何知道我的虚拟机是否空闲?

在 Google Cloud 中,要将虚拟机分类为空闲,必须满足以下所有条件:

  • 97% 的虚拟机运行时间的 CPU 利用率低于 0.03 个 vCPU。

  • 对于 95% 的 VM 运行时间,接收到的网络流量低于每秒 2600 字节 (B/s)。

  • 对于 95% 的 VM 运行时间,发送的网络流量低于 1000 B/s。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯