Hyper-V是Windows操作系统中强大的虚拟化平台,通过Hyper-V,用户可以创建和管理虚拟机(VM)。作为计算机专业人士,我们可能更倾向于使用命令行工具来高效地管理系统。在Windows上,PowerShell是一个功能强大的命令行工具,可以用来管理Hyper-V虚拟机。本文将详细介绍如何使用PowerShell管理Hyper-V虚拟机,包括创建、配置、启动和监控虚拟机。
在这里插入图片描述

一、启用Hyper-V功能

在使用PowerShell管理Hyper-V之前,您需要确保已启用Hyper-V功能。可以通过以下步骤启用Hyper-V:

  1. 打开PowerShell,以管理员身份运行。
  2. 输入以下命令以启用Hyper-V功能:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
  1. 系统会提示重新启动以完成安装,输入Y并回车进行重启。

二、使用PowerShell管理Hyper-V

1. 创建虚拟机

创建一个新的虚拟机是使用Hyper-V的第一步。以下命令将创建一个名为“TestVM”的虚拟机:

New-VM -Name "TestVM" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "C:\HyperV\TestVM\TestVM.vhdx" -NewVHDSizeBytes 20GB -Path "C:\HyperV\TestVM"
  • -Name:指定虚拟机的名称。
  • -MemoryStartupBytes:指定启动时分配给虚拟机的内存。
  • -Generation:指定虚拟机的代数(Generation 2)。
  • -NewVHDPath:指定虚拟硬盘文件的路径。
  • -NewVHDSizeBytes:指定虚拟硬盘的大小。
  • -Path:指定虚拟机的存储路径。

2. 配置虚拟机

创建虚拟机后,您需要配置其网络适配器、处理器数量以及安装源等。以下是一些常见的配置命令:

# 添加网络适配器
Add-VMNetworkAdapter -VMName "TestVM" -SwitchName "Default Switch"

# 配置处理器数量
Set-VMProcessor -VMName "TestVM" -Count 4

# 配置ISO安装源
Add-VMDvdDrive -VMName "TestVM" -Path "C:\Users\heish\Downloads\CentOS-8.5.2111-x86_64-boot.iso"
  • Add-VMNetworkAdapter:为虚拟机添加网络适配器。
  • Set-VMProcessor:配置虚拟机的处理器数量。
  • Set-VMDvdDrive:设置虚拟机的DVD驱动器路径,以便使用ISO文件作为安装源。

在管理Hyper-V虚拟机时,您可能需要禁用安全引导和设置虚拟机从光盘优先引导。这在安装新的操作系统或进行系统恢复时尤为重要。本文将详细介绍如何使用PowerShell执行这些操作。

2.1. 禁用虚拟机的安全引导

安全引导是windows独有的一种用于确保系统启动时只加载受信任软件的功能。某些情况下,比如安装linux, 我们可能需要禁用此功能来安装特定的操作系统或进行特定的维护任务。

Set-VMFirmware -VMName "TestVM" -EnableSecureBoot Off
  • Set-VMFirmware:设置虚拟机固件配置。
  • -VMName:指定虚拟机的名称。
  • -EnableSecureBoot:启用或禁用安全引导,Off表示禁用。
2.2. 设置虚拟机光盘优先引导

要使虚拟机从光盘优先引导,可以调整启动顺序。以下命令将设置虚拟机的启动顺序,使其优先从光盘引导:

$DVDDrive = Get-VMDvdDrive -VMName "TestVM"
Set-VMFirmware -VMName "TestVM" -FirstBootDevice $DVDDrive
  • Get-VMDvdDrive:获取虚拟机的DVD驱动器。
  • Set-VMFirmware:设置虚拟机固件配置。
  • -FirstBootDevice:设置虚拟机的首选引导设备。

3. 启动和关闭虚拟机

一旦虚拟机配置完成,您可以启动它:

Start-VM -Name "TestVM"

在这里插入图片描述

要关闭虚拟机,可以使用以下命令:

Stop-VM -Name "TestVM"

4. 检查虚拟机状态

您可以使用PowerShell检查虚拟机的当前状态:

Get-VM -Name "TestVM"

该命令将返回虚拟机的状态信息,包括运行状态、CPU使用率和内存使用情况等。

5. 监控虚拟机性能

PowerShell还可以用来监控虚拟机的性能,例如CPU和内存使用情况。以下命令将获取虚拟机的实时性能数据:

Get-Counter -Counter "\Hyper-V VM Vid Partition(TestVM)\% Processor Time"

6. 启动交互会话:

6.1. 以管理员身份打开 PowerShell。
6.2. 运行以下命令之一以使用虚拟机名称或 GUID 创建交互会话:

Enter-PSSession -VMName <VMName>
Enter-PSSession -VMId <VMId>

出现提示时,提供虚拟机的凭据。

6.3. 在虚拟机上运行命令。

你应该会看到作为 PowerShell 提示符前缀的 VMName 显示如下:

[VMName]: PS C:>

所有运行的命令将会在虚拟机上进行。 若要测试,可运行 ipconfighostname 以确保这些命令正在虚拟机中运行。

  1. 完成后,运行以下命令来关闭会话:

    Exit-PSSession 
    

7. 使用 Invoke-Command 运行脚本或命令

配合使用 PowerShell Direct 和 Invoke-Command 非常适合需要在虚拟机上运行一个命令或一个脚本但在这一点之外无需继续与虚拟机进行交互的情况。

7.1 运行单个命令:

通过使用虚拟机名称或 GUID 运行以下命令之一来创建会话:

Invoke-Command -VMName <VMName> -ScriptBlock { command } 
Invoke-Command -VMId <VMId> -ScriptBlock { command }

出现提示时,提供虚拟机的凭据。
该命令将在虚拟机上执行,如果存在到控制台的输出,会把此输出打印到控制台。 命令一运行将会自动关闭连接。

7.2 运行脚本:

通过使用虚拟机名称或 GUID 运行以下命令之一来创建会话:

Invoke-Command -VMName <VMName> -FilePath C:\host\script_path\script.ps1 
Invoke-Command -VMId <VMId> -FilePath C:\host\script_path\script.ps1 

出现提示时,提供虚拟机的凭据。
该脚本将在虚拟机上执行。 命令一运行将会自动关闭连接。

8. 使用 New-PSSession 和 Copy-Item 复制文件

注意: PowerShell Direct 仅支持 Windows 版本 14280 及更高版本中的持久性会话

在编写用于跨一个或多个远程计算机协调操作的脚本时,持久性 PowerShell 会话会非常有用。 一经创建后,持久性会话会一直存在于后台,直到你决定将其删除。 这意味着我们可以使用 Invoke-CommandEnter-PSSession 反复引用同一个会话而无需传递凭据。

通过使用相同的令牌,会话将保持原有状态。 由于持久性会话具有持久性,在会话中创建的或传递给会话的任何变量将跨多个调用被保留。 有多种工具可用于持久性会话。 在此示例中,我们将使用 New-PSSessionCopy-Item 在主机和虚拟机之间移动数据。

8.1. 创建会话,然后复制文件:

运行以下命令之一使用 New-PSSession 将持久性 PowerShell 会话创建到虚拟机。

$s = New-PSSession -VMName <VMName> -Credential (Get-Credential)
$s = New-PSSession -VMId <VMId> -Credential (Get-Credential)

出现提示时,提供虚拟机的凭据。

警告:
14500 之前的版本中存在一个 Bug。 如果不使用 -Credential 标志显式指定凭据,来宾操作系统中的服务将崩溃,并且将需要重新启动。 如果你遇到此问题,可在此处获取解决方法说明。

8.2. 将文件复制到虚拟机内。

要将 C:\host_path\data.txt 从主机复制到虚拟机内,运行:

Copy-Item -ToSession $s -Path C:\host_path\data.txt -Destination C:\guest_path\
8.3. 从虚拟机复制文件(到主机)。

要将 C:\guest_path\data.txt 从虚拟机复制到主机,运行:

Copy-Item -FromSession $s -Path C:\guest_path\data.txt -Destination C:\host_path\
8.4. 使用 Remove-PSSession 停止持久性会话。
Remove-PSSession $s

9. 删除虚拟机

如果您需要删除虚拟机,可以使用以下命令:

Remove-VM -Name "TestVM" -Force

该命令将删除名为“TestVM”的虚拟机,包括其配置文件和虚拟硬盘。

总结

使用PowerShell管理Hyper-V虚拟机可以显著提高工作效率,特别是对于需要批量管理虚拟机的专业人士。这里介绍了如何启用Hyper-V功能,并详细说明了如何使用PowerShell创建、配置、启动、监控,访问和删除虚拟机的步骤。通过这些命令和示例,我们可以更加高效地管理我们的虚拟化环境。

GitHub 加速计划 / po / PowerShell
44.28 K
7.17 K
下载
PowerShell/PowerShell: PowerShell 是由微软开发的命令行外壳程序和脚本环境,支持任务自动化和配置管理。它包含了丰富的.NET框架功能,适用于Windows和多个非Windows平台,提供了一种强大而灵活的方式来控制和自动执行系统管理任务。
最近提交(Master分支:3 个月前 )
a1774fd9 3 个月前
5ad1f1d2 3 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐