网站搜索

如何在 PowerShell 中管理 Hyper-V 虚拟机


您是否知道可以在 Windows Server 上完全自动化 Hyper-V VM?遵循此深入指南,了解如何使用 Windows PowerShell 释放 Hyper-V 自动化的强大功能。

如何使用 PowerShell 让 Hyper-V 在 Windows Server 上运行

在 Windows Server 上使用 PowerShell 管理和自动化 Hyper-V 之前,必须首先启用 Hyper-V 虚拟化平台。值得庆幸的是,有一种简单、PowerShell 友好的方法可以让 Hyper-V 正常工作。首先,以管理员身份打开 PowerShell 窗口。

PowerShell 窗口打开后,您可以使用以下 Install-WindowsFeature 命令将 Hyper-V 作为 Windows Server 上的一项功能打开。

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

运行上述命令后,Hyper-V 将在您的系统上启用。但是,在尝试使用 Hyper-V 之前,您需要重新启动 Windows Server。要重新启动 Windows Server,您可以使用以下 Restart-Computer 命令,或通过 Windows Server UI。

Restart-Computer

当您重新登录 Windows Server 时,您将能够使用 Microsoft 的 Hyper-V 虚拟化平台和 PowerShell 进行管理和自动化。

如何使用PowerShell完成常见的虚拟化任务

您可以直接在 PowerShell 中使用 Hyper-V 执行很多操作。让我们从一些基本的东西开始,比如“Get-VM”命令。此 cmdlet 将列出 Windows Server Hyper-V 上的所有可用 VM。要输入此命令,请以管理员身份启动 PowerShell 窗口。

Get-VM

Get-VM cmdlet 非常基本,因为它仅列出可用的虚拟机。不过,这会派上用场,特别是当您需要了解哪些虚拟机可通过 PowerShell Hyper-V cmdlet 进行管理时。

您可以使用许多有用的 cmdlet 来完成 Windows Server 上的 Hyper-V 任务。 New-VM 命令是这些 cmdlet 之一。要创建新 VM,请使用以下 New-VM 命令。

New-VM -Name "MyNewVM" -MemoryStartupBytes 4GB

您可以在 PowerShell 中使用的另一个有用的 Hyper-V cmdlet 是 Start-VM 命令。此命令将允许您通过 PowerShell 快速启动任何虚拟机。

Start-VM -Name "MyNewVM"

如果您希望关闭使用 Start-VM 启动的虚拟机,还有 Stop-VM 允许您关闭使用 Stop-VM -Name“MyNewVM” cmdlet。

用于完成常见虚拟化任务的更多有用命令

在上一节中,我们介绍了“Get-VM”、“New-VM”、“Start-VM”和“Stop-VM”等基本命令。但是,您可以使用许多更有用的命令来完成 Hyper-V 中的常见虚拟化任务。 New-VHD 就是这样的命令之一。此命令可让您直接从 PowerShell 为 Hyper-V 创建新的虚拟硬盘驱动器。

New-VHD -Path "C:\VMs\MyNewVM.vhdx" -SizeBytes 75GB -Dynamic

创建新的 VHD 是一回事,但如果您想将其附加到现有 VM 该怎么办?使用 Add-VMHardDiskDrive cmdlet 即可实现。但是,请确保您事先知道虚拟机的名称(使用 Get-VM 查找。)

Add-VMHardDiskDrive -VMName "MyNewVM" -Path "C:\VMs\MyNewVM.vhdx"

除了在 PowerShell 中向 Hyper-V VM 添加新的 VHD 之外,您还可以从那里管理网络。例如,如果您需要将虚拟机连接到虚拟交换机(已存在),则可以使用 Connect-VMNetworkAdapter cmdlet。

Connect-VMNetworkAdapter -VMName "MyNewVM" -SwitchName "YourVirtualSwitch"

这不是 PowerShell/Hyper-V 的唯一网络命令。有不少。下面列出了一些有用的命令,您可以利用它们来充分利用 Hyper-V 虚拟机网络。

  • Get-VMNetworkAdapter -VMName “VMName” — 此 cmdlet 允许您获取 VM 的虚拟网络适配器信息。
  • Set-VMNetworkAdapter -VMName “VMName” — 此 cmdlet 允许您配置网络适配器功能。
  • Add-VMNetworkAdapter -VMName “VMName” -SwitchName “VirtualSwitch” — 此 cmdlet 允许您向 VM 添加网络适配器。
  • Remove-VMNetworkAdapter -VMName “VMName” -Name “AdapterName” — 如果您希望从 VM 中删除网络适配器,可以使用此 cmdlet 来执行此操作。
  • New-VMSwitch -Name “VMName” -NetAdapterName “NetworkAdapterName” — 如果您需要在 VM 上创建新的虚拟交换机,可以使用以下 cmdlet 来执行此操作。
    - Get-VMSwitch -Name “VMName” — 如果您需要有关虚拟交换机的信息,此 cmdlet 将为您完成。
    -Remove-VMSwitch -Name“VMName” — 需要从 Hyper-V 中的 VM 中删除虚拟交换机吗?使用此 cmdlet 执行此操作。
    - Set-VMSwitch -Name “VMName” -NetAdapterName “AdapterName” — 此 cmdlet 允许您设置虚拟交换机的名称。
    - Set-VMNetworkAdapterVlan -VMName “VMName” -Access -VlanId 10 — 如果您需要在 Hyper-V VM 中配置 VLAN,可以使用此 cmdlet 来执行此操作。

如何使用 PowerShell 脚本自动执行 Hyper-V 任务

了解 PowerShell 中 Hyper-V 的基本 cmdlet 将使您能够编写一些功能强大的自动化脚本,从而更轻松地管理虚拟机。例如,如果您需要每周二在打补丁后重新启动 3 个虚拟机,您可以编写以下 .PS1 脚本。

注意:在尝试使用此脚本之前,请将“VM1”、“VM2”和“VM3”更改为您希望通过脚本与之交互的虚拟机。

# PowerShell script to reboot VMs

# Define the VM names
$vmNames = @("VM1", "VM2", "VM3")

# Function to reboot VMs
Function Reboot-VMs {
    foreach ($vmName in $vmNames) {
        Restart-VM -Name $vmName -Force
        Write-Host "Rebooted VM: $vmName"
    }
}

# Schedule the script to run every Tuesday after patching
# Note: This part is usually done outside the script through Task Scheduler or similar tools

# Call the function to reboot VMs
Reboot-VMs

PowerShell 脚本可以是高级的,也可以是基本的,这实际上取决于您的才能。掌握 PowerShell 脚本允许您自动执行各种 Hyper-V 操作。有关如何学习如何创建 PowerShell 脚本的更多信息,请访问官方 Microsoft PowerShell 脚本文档。

相关文章